@adaptabletools/adaptable-cjs 23.0.0-canary.2 → 23.0.0-canary.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/index.css +68 -73
  2. package/package.json +1 -1
  3. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +1 -3
  4. package/src/AdaptableState/Common/AdaptableFormat.d.ts +1 -1
  5. package/src/Api/EventApi.d.ts +1 -1
  6. package/src/Api/Events/ReportScheduleRan.d.ts +4 -0
  7. package/src/Api/Internal/EventInternalApi.js +2 -1
  8. package/src/View/AdaptablePopover/index.js +1 -1
  9. package/src/View/Components/Buttons/ButtonInfo.d.ts +1 -1
  10. package/src/View/Components/Buttons/ButtonInfo.js +4 -4
  11. package/src/View/Components/ColumnFilter/AdaptableColumnFilter.js +1 -1
  12. package/src/View/Components/ColumnFilter/ColumnFilter.js +15 -5
  13. package/src/View/Components/ColumnFilter/FloatingFilter.js +57 -59
  14. package/src/View/Components/FilterForm/ListBoxFilterForm.js +1 -1
  15. package/src/View/Components/Forms/AdaptableFormControlTextClear.js +2 -1
  16. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopup.js +1 -1
  17. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +2 -2
  18. package/src/View/Components/ValueSelector/index.js +1 -1
  19. package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +3 -8
  20. package/src/View/GridFilter/GridFilterViewPanel.js +1 -1
  21. package/src/View/Layout/Wizard/sections/ColumnsSection.js +3 -3
  22. package/src/View/Layout/Wizard/sections/PivotColumnsSection.js +1 -1
  23. package/src/View/Layout/Wizard/sections/RowSelectionSection.js +1 -1
  24. package/src/View/Layout/Wizard/sections/SettingsSection.js +1 -1
  25. package/src/View/License/LicenseWatermark.js +1 -1
  26. package/src/View/StyledColumn/Wizard/StyledColumnWizardScopeSection.js +1 -1
  27. package/src/View/Wizard/OnePageWizards.js +1 -1
  28. package/src/components/Card/index.js +1 -1
  29. package/src/components/Combobox/index.js +10 -4
  30. package/src/components/Datepicker/index.js +2 -2
  31. package/src/components/Dialog/index.js +1 -1
  32. package/src/components/DragAndDropContext/TabList.js +1 -1
  33. package/src/components/Dropdown/Arrows.js +0 -1
  34. package/src/components/ExpressionEditor/BaseEditorInput.js +1 -1
  35. package/src/components/ExpressionEditor/index.js +1 -1
  36. package/src/components/Input/index.js +1 -1
  37. package/src/components/NewDropdownButton/index.d.ts +1 -0
  38. package/src/components/NewDropdownButton/index.js +2 -2
  39. package/src/components/NewSelect/index.d.ts +2 -0
  40. package/src/components/NewSelect/index.js +10 -7
  41. package/src/components/Panel/index.js +1 -1
  42. package/src/components/SimpleButton/index.js +1 -1
  43. package/src/components/Tabs/index.js +1 -1
  44. package/src/components/Tree/TreeDropdown/index.js +4 -8
  45. package/src/components/ui/button.d.ts +5 -2
  46. package/src/components/ui/button.js +8 -6
  47. package/src/components/ui/combobox.d.ts +16 -16
  48. package/src/components/ui/combobox.js +48 -49
  49. package/src/components/ui/input-group.d.ts +10 -9
  50. package/src/components/ui/input-group.js +19 -16
  51. package/src/components/ui/input.d.ts +2 -2
  52. package/src/components/ui/input.js +7 -4
  53. package/src/components/ui/popover.d.ts +5 -5
  54. package/src/components/ui/popover.js +5 -5
  55. package/src/components/ui/select.d.ts +7 -6
  56. package/src/components/ui/select.js +19 -17
  57. package/src/components/ui/textarea.d.ts +2 -2
  58. package/src/components/ui/textarea.js +7 -4
  59. package/src/components/ui/tooltip.d.ts +6 -5
  60. package/src/components/ui/tooltip.js +10 -7
  61. package/src/env.js +2 -2
  62. package/src/lib/utils.d.ts +20 -0
  63. package/src/lib/utils.js +48 -1
  64. package/src/metamodel/adaptable.metamodel.d.ts +7 -2
  65. package/src/metamodel/adaptable.metamodel.js +1 -1
  66. package/src/migration/VersionUpgrade23.d.ts +2 -3
  67. package/src/migration/VersionUpgrade23.js +4 -16
  68. package/themes/dark.css +7 -17
  69. package/tsconfig.cjs.tsbuildinfo +1 -1
@@ -15,15 +15,15 @@ function Popover({ ...props }) {
15
15
  function PopoverTrigger({ ...props }) {
16
16
  return (0, jsx_runtime_1.jsx)(popover_1.Popover.Trigger, { "data-slot": "popover-trigger", ...props });
17
17
  }
18
- function PopoverContent({ className, align = "center", alignOffset = 0, side = "bottom", sideOffset = 4, ...props }) {
19
- return ((0, jsx_runtime_1.jsx)(popover_1.Popover.Portal, { children: (0, jsx_runtime_1.jsx)(popover_1.Popover.Positioner, { align: align, alignOffset: alignOffset, side: side, sideOffset: sideOffset, className: `twa:isolate ${utils_1.POPUP_Z_INDEX}`, children: (0, jsx_runtime_1.jsx)(popover_1.Popover.Popup, { "data-slot": "popover-content", className: (0, utils_1.cn)("twa:flex twa:w-72 twa:origin-(--transform-origin) twa:flex-col twa:gap-4 twa:rounded-md twa:bg-popover twa:p-4 twa:text-sm twa:text-popover-foreground twa:shadow-md twa:ring-1 twa:ring-foreground/10 twa:outline-hidden twa:duration-100 twa:data-[side=bottom]:slide-in-from-top-2 twa:data-[side=inline-end]:slide-in-from-left-2 twa:data-[side=inline-start]:slide-in-from-right-2 twa:data-[side=left]:slide-in-from-right-2 twa:data-[side=right]:slide-in-from-left-2 twa:data-[side=top]:slide-in-from-bottom-2 twa:data-open:animate-in twa:data-open:fade-in-0 twa:data-open:zoom-in-95 twa:data-closed:animate-out twa:data-closed:fade-out-0 twa:data-closed:zoom-out-95", className), ...props }) }) }));
18
+ function PopoverContent({ className, align = 'center', alignOffset = 0, side = 'bottom', sideOffset = 4, ...props }) {
19
+ return ((0, jsx_runtime_1.jsx)(popover_1.Popover.Portal, { children: (0, jsx_runtime_1.jsx)(popover_1.Popover.Positioner, { align: align, alignOffset: alignOffset, side: side, sideOffset: sideOffset, className: `twa:isolate ${utils_1.POPUP_Z_INDEX}`, children: (0, jsx_runtime_1.jsx)(popover_1.Popover.Popup, { "data-slot": "popover-content", className: (0, utils_1.cn)('twa:flex twa:w-72 twa:origin-(--transform-origin) twa:flex-col twa:gap-4 twa:rounded-standard twa:bg-popover twa:p-4 twa:text-sm twa:text-popover-foreground twa:shadow-md twa:ring-1 twa:ring-foreground/10 twa:outline-hidden twa:duration-100 twa:data-[side=bottom]:slide-in-from-top-2 twa:data-[side=inline-end]:slide-in-from-left-2 twa:data-[side=inline-start]:slide-in-from-right-2 twa:data-[side=left]:slide-in-from-right-2 twa:data-[side=right]:slide-in-from-left-2 twa:data-[side=top]:slide-in-from-bottom-2 twa:data-open:animate-in twa:data-open:fade-in-0 twa:data-open:zoom-in-95 twa:data-closed:animate-out twa:data-closed:fade-out-0 twa:data-closed:zoom-out-95', className), ...props }) }) }));
20
20
  }
21
21
  function PopoverHeader({ className, ...props }) {
22
- return ((0, jsx_runtime_1.jsx)("div", { "data-slot": "popover-header", className: (0, utils_1.cn)("twa:flex twa:flex-col twa:gap-1 twa:text-sm", className), ...props }));
22
+ return ((0, jsx_runtime_1.jsx)("div", { "data-slot": "popover-header", className: (0, utils_1.cn)('twa:flex twa:flex-col twa:gap-1 twa:text-sm', className), ...props }));
23
23
  }
24
24
  function PopoverTitle({ className, ...props }) {
25
- return ((0, jsx_runtime_1.jsx)(popover_1.Popover.Title, { "data-slot": "popover-title", className: (0, utils_1.cn)("twa: twa:font-medium", className), ...props }));
25
+ return ((0, jsx_runtime_1.jsx)(popover_1.Popover.Title, { "data-slot": "popover-title", className: (0, utils_1.cn)('twa: twa:font-medium', className), ...props }));
26
26
  }
27
27
  function PopoverDescription({ className, ...props }) {
28
- return ((0, jsx_runtime_1.jsx)(popover_1.Popover.Description, { "data-slot": "popover-description", className: (0, utils_1.cn)("twa:text-muted-foreground", className), ...props }));
28
+ return ((0, jsx_runtime_1.jsx)(popover_1.Popover.Description, { "data-slot": "popover-description", className: (0, utils_1.cn)('twa:text-muted-foreground', className), ...props }));
29
29
  }
@@ -1,12 +1,13 @@
1
1
  import * as React from 'react';
2
2
  import { Select as SelectPrimitive } from '@base-ui/react/select';
3
3
  declare const Select: typeof SelectPrimitive.Root;
4
- declare function SelectGroup({ className, ...props }: SelectPrimitive.Group.Props): React.JSX.Element;
4
+ declare const SelectGroup: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/select").SelectGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
5
  declare function SelectValue({ className, ...props }: SelectPrimitive.Value.Props): React.JSX.Element;
6
- declare function SelectTrigger({ className, size, children, ...props }: SelectPrimitive.Trigger.Props & {
7
- size?: 'sm' | 'default';
6
+ declare const SelectTrigger: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/select").SelectTriggerProps & {
7
+ size?: "sm" | "default";
8
8
  'data-name'?: string;
9
- }): React.JSX.Element;
9
+ icon?: React.ReactNode;
10
+ }, "ref"> & React.RefAttributes<HTMLButtonElement>>;
10
11
  declare function SelectContent({ className, children, side, sideOffset, align, alignOffset, alignItemWithTrigger, container, stopMouseDownPropagation, ...props }: SelectPrimitive.Popup.Props & Pick<SelectPrimitive.Positioner.Props, 'align' | 'alignOffset' | 'side' | 'sideOffset' | 'alignItemWithTrigger'> & {
11
12
  /** Portal mount node (e.g. popover body) so nested floating UI stays “inside” the parent surface. */
12
13
  container?: React.ComponentProps<typeof SelectPrimitive.Portal>['container'];
@@ -18,8 +19,8 @@ declare function SelectContent({ className, children, side, sideOffset, align, a
18
19
  */
19
20
  stopMouseDownPropagation?: boolean;
20
21
  }): React.JSX.Element;
21
- declare function SelectLabel({ className, ...props }: SelectPrimitive.GroupLabel.Props): React.JSX.Element;
22
- declare function SelectItem({ className, children, ...props }: SelectPrimitive.Item.Props): React.JSX.Element;
22
+ declare const SelectLabel: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/select").SelectGroupLabelProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
23
+ declare const SelectItem: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/select").SelectItemProps, "ref"> & React.RefAttributes<HTMLElement>>;
23
24
  declare function SelectSeparator({ className, ...props }: SelectPrimitive.Separator.Props): React.JSX.Element;
24
25
  declare function SelectScrollUpButton({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>): React.JSX.Element;
25
26
  declare function SelectScrollDownButton({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>): React.JSX.Element;
@@ -1,30 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Select = void 0;
3
+ exports.SelectTrigger = exports.SelectLabel = exports.SelectItem = exports.SelectGroup = exports.Select = void 0;
4
4
  exports.SelectContent = SelectContent;
5
- exports.SelectGroup = SelectGroup;
6
- exports.SelectItem = SelectItem;
7
- exports.SelectLabel = SelectLabel;
8
5
  exports.SelectScrollDownButton = SelectScrollDownButton;
9
6
  exports.SelectScrollUpButton = SelectScrollUpButton;
10
7
  exports.SelectSeparator = SelectSeparator;
11
- exports.SelectTrigger = SelectTrigger;
12
8
  exports.SelectValue = SelectValue;
9
+ const tslib_1 = require("tslib");
13
10
  const jsx_runtime_1 = require("react/jsx-runtime");
11
+ const React = tslib_1.__importStar(require("react"));
14
12
  const select_1 = require("@base-ui/react/select");
15
13
  const utils_1 = require("../../lib/utils");
16
14
  const lucide_react_1 = require("lucide-react");
17
15
  const Select = select_1.Select.Root;
18
16
  exports.Select = Select;
19
- function SelectGroup({ className, ...props }) {
20
- return ((0, jsx_runtime_1.jsx)(select_1.Select.Group, { "data-slot": "select-group", className: (0, utils_1.cn)('twa:scroll-my-1 twa:p-1', className), ...props }));
21
- }
17
+ const SelectGroup = React.forwardRef(function SelectGroup({ className, ...props }, ref) {
18
+ return ((0, jsx_runtime_1.jsx)(select_1.Select.Group, { "data-slot": "select-group", className: (0, utils_1.cn)('twa:scroll-my-1 twa:p-1', className), ref: ref, ...props }));
19
+ });
20
+ exports.SelectGroup = SelectGroup;
22
21
  function SelectValue({ className, ...props }) {
23
22
  return ((0, jsx_runtime_1.jsx)(select_1.Select.Value, { "data-slot": "select-value", className: (0, utils_1.cn)('twa:text-input-foreground twa:flex twa:flex-1 twa:text-left', className), ...props }));
24
23
  }
25
- function SelectTrigger({ className, size = 'default', children, ...props }) {
26
- return ((0, jsx_runtime_1.jsxs)(select_1.Select.Trigger, { "data-slot": "select-trigger", "data-size": size, className: (0, utils_1.cn)('twa:flex twa:w-fit twa:items-center twa:justify-between twa:gap-1.5 twa:rounded-input twa:border twa:border-input twa:py-1.5 twa:pr-2 twa:pl-2.5 twa:text-sm twa:whitespace-nowrap twa:shadow-xs twa:transition-[color,box-shadow] twa:outline-none twa:focus-visible:border-ring twa:focus-visible:ring-3 twa:focus-visible:ring-ring/50 twa:disabled:cursor-not-allowed twa:disabled:opacity-50 twa:aria-invalid:border-destructive twa:aria-invalid:ring-3 twa:aria-invalid:ring-destructive/20 twa:data-placeholder:text-muted-foreground twa:data-[size=default]:min-h-input twa:data-[size=sm]:h-7 twa:data-[size=sm]:min-h-auto twa:*:data-[slot=select-value]:line-clamp-1 twa:*:data-[slot=select-value]:flex twa:*:data-[slot=select-value]:items-center twa:*:data-[slot=select-value]:gap-1.5 twa:bg-input-background twa:hover:bg-input-background/80 twa:dark:aria-invalid:border-destructive/50 twa:dark:aria-invalid:ring-destructive/40 twa:[&_svg]:pointer-events-none twa:[&_svg]:shrink-0 twa:[&_svg:not([class*=size-])]:size-4', className), ...props, "data-name": props['data-name'], children: [children, (0, jsx_runtime_1.jsx)(select_1.Select.Icon, { render: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronDownIcon, { className: "twa:pointer-events-none twa:size-4 twa:text-muted-foreground" }) })] }));
27
- }
24
+ const SelectTrigger = React.forwardRef(function SelectTrigger({ className, size = 'default', children, icon, ...props }, ref) {
25
+ return ((0, jsx_runtime_1.jsxs)(select_1.Select.Trigger, { ref: ref, "data-slot": "select-trigger", "data-size": size, className: (0, utils_1.cn)('twa:flex twa:w-fit twa:items-center twa:justify-between twa:gap-1.5 twa:rounded-input twa:border twa:border-input twa:py-1.5 twa:pr-2 twa:pl-2.5 twa:text-sm twa:whitespace-nowrap twa:shadow-xs twa:transition-[color,box-shadow] twa:outline-none twa:focus-visible:border-ring twa:focus-visible:ring-3 twa:focus-visible:ring-ring/50 twa:disabled:cursor-not-allowed twa:disabled:opacity-50 twa:aria-invalid:border-destructive twa:aria-invalid:ring-3 twa:aria-invalid:ring-destructive/20 twa:data-placeholder:text-muted-foreground twa:data-[size=default]:min-h-input twa:data-[size=sm]:h-7 twa:data-[size=sm]:min-h-auto twa:*:data-[slot=select-value]:line-clamp-1 twa:*:data-[slot=select-value]:flex twa:*:data-[slot=select-value]:items-center twa:*:data-[slot=select-value]:gap-1.5 twa:bg-input-background twa:hover:bg-input-background/80 twa:dark:aria-invalid:border-destructive/50 twa:dark:aria-invalid:ring-destructive/40 twa:[&_svg]:pointer-events-none twa:[&_svg]:shrink-0 twa:[&_svg:not([class*=size-])]:size-4', className), ...props, "data-name": props['data-name'], children: [children, icon !== undefined ? (icon) : ((0, jsx_runtime_1.jsx)(select_1.Select.Icon, { render: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronDownIcon, { className: "twa:pointer-events-none twa:size-4 twa:text-muted-foreground" }) }))] }));
26
+ });
27
+ exports.SelectTrigger = SelectTrigger;
28
28
  function SelectContent({ className, children, side = 'bottom', sideOffset = 4, align = 'center', alignOffset = 0, alignItemWithTrigger = true, container, stopMouseDownPropagation = false, ...props }) {
29
29
  const onMouseDown = stopMouseDownPropagation
30
30
  ? (e) => {
@@ -33,12 +33,14 @@ function SelectContent({ className, children, side = 'bottom', sideOffset = 4, a
33
33
  : undefined;
34
34
  return ((0, jsx_runtime_1.jsx)(select_1.Select.Portal, { container: container, children: (0, jsx_runtime_1.jsx)(select_1.Select.Positioner, { side: side, sideOffset: sideOffset, align: align, alignOffset: alignOffset, alignItemWithTrigger: alignItemWithTrigger, className: `twa:isolate ${utils_1.POPUP_Z_INDEX}`, children: (0, jsx_runtime_1.jsxs)(select_1.Select.Popup, { "data-slot": "select-content", "data-align-trigger": alignItemWithTrigger, onMouseDown: onMouseDown, className: (0, utils_1.cn)('twa:relative twa:isolate twa:z-50 twa:max-h-(--available-height) twa:min-w-36 twa:origin-(--transform-origin) twa:overflow-x-hidden twa:overflow-y-auto twa:rounded-input twa:bg-popover twa:text-popover-foreground twa:shadow-md twa:ring-1 twa:ring-foreground/10 twa:duration-100 twa:data-[align-trigger=true]:animate-none twa:data-[side=bottom]:slide-in-from-top-2 twa:data-[side=inline-end]:slide-in-from-left-2 twa:data-[side=inline-start]:slide-in-from-right-2 twa:data-[side=left]:slide-in-from-right-2 twa:data-[side=right]:slide-in-from-left-2 twa:data-[side=top]:slide-in-from-bottom-2 twa:data-open:animate-in twa:data-open:fade-in-0 twa:data-open:zoom-in-95 twa:data-closed:animate-out twa:data-closed:fade-out-0 twa:data-closed:zoom-out-95', 'twa:w-(--anchor-width)', 'twa:max-w-[min(var(--available-width),80vw)]', className), ...props, children: [(0, jsx_runtime_1.jsx)(SelectScrollUpButton, {}), (0, jsx_runtime_1.jsx)(select_1.Select.List, { children: children }), (0, jsx_runtime_1.jsx)(SelectScrollDownButton, {})] }) }) }));
35
35
  }
36
- function SelectLabel({ className, ...props }) {
37
- return ((0, jsx_runtime_1.jsx)(select_1.Select.GroupLabel, { "data-slot": "select-label", className: (0, utils_1.cn)('twa:px-2 twa:py-1.5 twa:text-xs twa:text-muted-foreground', className), ...props }));
38
- }
39
- function SelectItem({ className, children, ...props }) {
40
- return ((0, jsx_runtime_1.jsxs)(select_1.Select.Item, { className: (0, utils_1.cn)('twa:relative twa:flex twa:w-full twa:cursor-default twa:items-center twa:gap-2 twa:rounded-input twa:py-1.5 twa:pr-8 twa:pl-2 twa:text-sm twa:outline-hidden twa:select-none twa:focus:bg-accent twa:focus:text-accent-foreground twa:not-data-[variant=destructive]:focus:**:text-accent-foreground twa:data-disabled:pointer-events-none twa:data-disabled:opacity-50 twa:[&_svg]:pointer-events-none twa:[&_svg]:shrink-0 twa:[&_svg:not([class*=size-])]:size-4 twa:*:[span]:last:flex twa:*:[span]:last:items-center twa:*:[span]:last:gap-2', className), ...props, "data-slot": "select-item", children: [(0, jsx_runtime_1.jsx)(select_1.Select.ItemText, { className: "twa:block twa:min-w-0 twa:flex-1 twa:truncate", children: children }), (0, jsx_runtime_1.jsx)(select_1.Select.ItemIndicator, { render: (0, jsx_runtime_1.jsx)("span", { className: "twa:pointer-events-none twa:absolute twa:right-2 twa:flex twa:size-4 twa:items-center twa:justify-center" }), children: (0, jsx_runtime_1.jsx)(lucide_react_1.CheckIcon, { className: "twa:pointer-events-none" }) })] }));
41
- }
36
+ const SelectLabel = React.forwardRef(function SelectLabel({ className, ...props }, ref) {
37
+ return ((0, jsx_runtime_1.jsx)(select_1.Select.GroupLabel, { "data-slot": "select-label", className: (0, utils_1.cn)('twa:px-2 twa:py-1.5 twa:text-xs twa:text-muted-foreground', className), ref: ref, ...props }));
38
+ });
39
+ exports.SelectLabel = SelectLabel;
40
+ const SelectItem = React.forwardRef(function SelectItem({ className, children, ...props }, ref) {
41
+ return ((0, jsx_runtime_1.jsxs)(select_1.Select.Item, { ref: ref, className: (0, utils_1.cn)('twa:relative twa:flex twa:w-full twa:cursor-default twa:items-center twa:gap-2 twa:rounded-input twa:py-1.5 twa:pr-8 twa:pl-2 twa:text-sm twa:outline-hidden twa:select-none twa:focus:bg-accent twa:focus:text-accent-foreground twa:not-data-[variant=destructive]:focus:**:text-accent-foreground twa:data-disabled:pointer-events-none twa:data-disabled:opacity-50 twa:[&_svg]:pointer-events-none twa:[&_svg]:shrink-0 twa:[&_svg:not([class*=size-])]:size-4 twa:*:[span]:last:flex twa:*:[span]:last:items-center twa:*:[span]:last:gap-2', className), ...props, "data-slot": "select-item", children: [(0, jsx_runtime_1.jsx)(select_1.Select.ItemText, { className: "twa:block twa:min-w-0 twa:flex-1 twa:truncate", children: children }), (0, jsx_runtime_1.jsx)(select_1.Select.ItemIndicator, { render: (0, jsx_runtime_1.jsx)("span", { className: "twa:pointer-events-none twa:absolute twa:right-2 twa:flex twa:size-4 twa:items-center twa:justify-center" }), children: (0, jsx_runtime_1.jsx)(lucide_react_1.CheckIcon, { className: "twa:pointer-events-none" }) })] }));
42
+ });
43
+ exports.SelectItem = SelectItem;
42
44
  function SelectSeparator({ className, ...props }) {
43
45
  return ((0, jsx_runtime_1.jsx)(select_1.Select.Separator, { "data-slot": "select-separator", className: (0, utils_1.cn)('twa:pointer-events-none twa:-mx-1 twa:my-1 twa:h-px twa:bg-border', className), ...props }));
44
46
  }
@@ -1,3 +1,3 @@
1
- import * as React from "react";
2
- declare function Textarea({ className, ...props }: React.ComponentProps<"textarea">): React.JSX.Element;
1
+ import * as React from 'react';
2
+ declare const Textarea: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, "ref"> & React.RefAttributes<HTMLTextAreaElement>>;
3
3
  export { Textarea };
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Textarea = Textarea;
3
+ exports.Textarea = void 0;
4
+ const tslib_1 = require("tslib");
4
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const React = tslib_1.__importStar(require("react"));
5
7
  const utils_1 = require("../../lib/utils");
6
- function Textarea({ className, ...props }) {
7
- return ((0, jsx_runtime_1.jsx)("textarea", { "data-slot": "textarea", className: (0, utils_1.cn)("twa:flex twa:field-sizing-content twa:min-h-16 twa:w-full twa:rounded-md twa:border twa:border-input twa:bg-transparent twa:px-2.5 twa:py-2 twa:text-base twa:shadow-xs twa:transition-[color,box-shadow] twa:outline-none twa:placeholder:text-muted-foreground twa:focus-visible:border-ring twa:focus-visible:ring-3 twa:focus-visible:ring-ring/50 twa:disabled:cursor-not-allowed twa:disabled:opacity-50 twa:aria-invalid:border-destructive twa:aria-invalid:ring-3 twa:aria-invalid:ring-destructive/20 twa:md:text-sm twa:dark:bg-input/30 twa:dark:aria-invalid:border-destructive/50 twa:dark:aria-invalid:ring-destructive/40", className), ...props }));
8
- }
8
+ const Textarea = React.forwardRef(function Textarea({ className, ...props }, ref) {
9
+ return ((0, jsx_runtime_1.jsx)("textarea", { "data-slot": "textarea", className: (0, utils_1.cn)('twa:flex twa:field-sizing-content twa:min-h-16 twa:w-full twa:rounded-md twa:border twa:border-input twa:bg-transparent twa:px-2.5 twa:py-2 twa:text-base twa:shadow-xs twa:transition-[color,box-shadow] twa:outline-none twa:placeholder:text-muted-foreground twa:focus-visible:border-ring twa:focus-visible:ring-3 twa:focus-visible:ring-ring/50 twa:disabled:cursor-not-allowed twa:disabled:opacity-50 twa:aria-invalid:border-destructive twa:aria-invalid:ring-3 twa:aria-invalid:ring-destructive/20 twa:md:text-sm twa:dark:aria-invalid:border-destructive/50 twa:dark:aria-invalid:ring-destructive/40', className), ref: ref, ...props }));
10
+ });
11
+ exports.Textarea = Textarea;
@@ -1,6 +1,7 @@
1
- import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
2
- declare function TooltipProvider({ delay, ...props }: TooltipPrimitive.Provider.Props): import("react").JSX.Element;
3
- declare function Tooltip({ ...props }: TooltipPrimitive.Root.Props): import("react").JSX.Element;
4
- declare function TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props): import("react").JSX.Element;
5
- declare function TooltipContent({ className, side, sideOffset, align, alignOffset, children, ...props }: TooltipPrimitive.Popup.Props & Pick<TooltipPrimitive.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset">): import("react").JSX.Element;
1
+ import * as React from 'react';
2
+ import { Tooltip as TooltipPrimitive } from '@base-ui/react/tooltip';
3
+ declare function TooltipProvider({ delay, ...props }: TooltipPrimitive.Provider.Props): React.JSX.Element;
4
+ declare function Tooltip({ ...props }: TooltipPrimitive.Root.Props): React.JSX.Element;
5
+ declare const TooltipTrigger: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.Trigger.Props<unknown>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
6
+ declare function TooltipContent({ className, side, sideOffset, align, alignOffset, children, ...props }: TooltipPrimitive.Popup.Props & Pick<TooltipPrimitive.Positioner.Props, 'align' | 'alignOffset' | 'side' | 'sideOffset'>): React.JSX.Element;
6
7
  export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
@@ -1,21 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TooltipTrigger = void 0;
3
4
  exports.Tooltip = Tooltip;
4
- exports.TooltipTrigger = TooltipTrigger;
5
5
  exports.TooltipContent = TooltipContent;
6
6
  exports.TooltipProvider = TooltipProvider;
7
+ const tslib_1 = require("tslib");
7
8
  const jsx_runtime_1 = require("react/jsx-runtime");
9
+ const React = tslib_1.__importStar(require("react"));
8
10
  const tooltip_1 = require("@base-ui/react/tooltip");
9
11
  const utils_1 = require("../../lib/utils");
10
12
  function TooltipProvider({ delay = 0, ...props }) {
11
- return ((0, jsx_runtime_1.jsx)(tooltip_1.Tooltip.Provider, { "data-slot": "tooltip-provider", delay: delay, ...props }));
13
+ return (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip.Provider, { "data-slot": "tooltip-provider", delay: delay, ...props });
12
14
  }
13
15
  function Tooltip({ ...props }) {
14
16
  return (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip.Root, { "data-slot": "tooltip", ...props });
15
17
  }
16
- function TooltipTrigger({ ...props }) {
17
- return (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip.Trigger, { "data-slot": "tooltip-trigger", ...props });
18
- }
19
- function TooltipContent({ className, side = "top", sideOffset = 4, align = "center", alignOffset = 0, children, ...props }) {
20
- return ((0, jsx_runtime_1.jsx)(tooltip_1.Tooltip.Portal, { children: (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip.Positioner, { align: align, alignOffset: alignOffset, side: side, sideOffset: sideOffset, className: `twa:isolate ${utils_1.POPUP_Z_INDEX}`, children: (0, jsx_runtime_1.jsxs)(tooltip_1.Tooltip.Popup, { "data-slot": "tooltip-content", className: (0, utils_1.cn)("twa:z-50 twa:inline-flex twa:w-fit twa:max-w-xs twa:origin-(--transform-origin) twa:items-center twa:gap-1.5 twa:rounded-md twa:bg-foreground twa:px-3 twa:py-1.5 twa:text-xs twa:text-background twa:has-data-[slot=kbd]:pr-1.5 twa:data-[side=bottom]:slide-in-from-top-2 twa:data-[side=inline-end]:slide-in-from-left-2 twa:data-[side=inline-start]:slide-in-from-right-2 twa:data-[side=left]:slide-in-from-right-2 twa:data-[side=right]:slide-in-from-left-2 twa:data-[side=top]:slide-in-from-bottom-2 twa:**:data-[slot=kbd]:relative twa:**:data-[slot=kbd]:isolate twa:**:data-[slot=kbd]:z-50 twa:**:data-[slot=kbd]:rounded-sm twa:data-[state=delayed-open]:animate-in twa:data-[state=delayed-open]:fade-in-0 twa:data-[state=delayed-open]:zoom-in-95 twa:data-open:animate-in twa:data-open:fade-in-0 twa:data-open:zoom-in-95 twa:data-closed:animate-out twa:data-closed:fade-out-0 twa:data-closed:zoom-out-95", className), ...props, children: [children, (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip.Arrow, { className: "twa:z-50 twa:size-2.5 twa:translate-y-[calc(-50%-2px)] twa:rotate-45 twa:rounded-[2px] twa:bg-foreground twa:fill-foreground twa:data-[side=bottom]:top-1 twa:data-[side=inline-end]:top-1/2! twa:data-[side=inline-end]:-left-1 twa:data-[side=inline-end]:-translate-y-1/2 twa:data-[side=inline-start]:top-1/2! twa:data-[side=inline-start]:-right-1 twa:data-[side=inline-start]:-translate-y-1/2 twa:data-[side=left]:top-1/2! twa:data-[side=left]:-right-1 twa:data-[side=left]:-translate-y-1/2 twa:data-[side=right]:top-1/2! twa:data-[side=right]:-left-1 twa:data-[side=right]:-translate-y-1/2 twa:data-[side=top]:-bottom-2.5" })] }) }) }));
18
+ const TooltipTrigger = React.forwardRef(function TooltipTrigger({ ...props }, ref) {
19
+ return (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip.Trigger, { "data-slot": "tooltip-trigger", ref: ref, ...props });
20
+ });
21
+ exports.TooltipTrigger = TooltipTrigger;
22
+ function TooltipContent({ className, side = 'top', sideOffset = 4, align = 'center', alignOffset = 0, children, ...props }) {
23
+ return ((0, jsx_runtime_1.jsx)(tooltip_1.Tooltip.Portal, { children: (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip.Positioner, { align: align, alignOffset: alignOffset, side: side, sideOffset: sideOffset, className: `twa:isolate ${utils_1.POPUP_Z_INDEX}`, children: (0, jsx_runtime_1.jsxs)(tooltip_1.Tooltip.Popup, { "data-slot": "tooltip-content", className: (0, utils_1.cn)('twa:z-50 twa:inline-flex twa:w-fit twa:max-w-xs twa:origin-(--transform-origin) twa:items-center twa:gap-1.5 twa:rounded-md twa:bg-foreground twa:px-3 twa:py-1.5 twa:text-xs twa:text-background twa:has-data-[slot=kbd]:pr-1.5 twa:data-[side=bottom]:slide-in-from-top-2 twa:data-[side=inline-end]:slide-in-from-left-2 twa:data-[side=inline-start]:slide-in-from-right-2 twa:data-[side=left]:slide-in-from-right-2 twa:data-[side=right]:slide-in-from-left-2 twa:data-[side=top]:slide-in-from-bottom-2 twa:**:data-[slot=kbd]:relative twa:**:data-[slot=kbd]:isolate twa:**:data-[slot=kbd]:z-50 twa:**:data-[slot=kbd]:rounded-sm twa:data-[state=delayed-open]:animate-in twa:data-[state=delayed-open]:fade-in-0 twa:data-[state=delayed-open]:zoom-in-95 twa:data-open:animate-in twa:data-open:fade-in-0 twa:data-open:zoom-in-95 twa:data-closed:animate-out twa:data-closed:fade-out-0 twa:data-closed:zoom-out-95', className), ...props, children: [children, (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip.Arrow, { className: "twa:z-50 twa:size-2.5 twa:translate-y-[calc(-50%-2px)] twa:rotate-45 twa:rounded-[2px] twa:bg-foreground twa:fill-foreground twa:data-[side=bottom]:top-1 twa:data-[side=inline-end]:top-1/2! twa:data-[side=inline-end]:-left-1 twa:data-[side=inline-end]:-translate-y-1/2 twa:data-[side=inline-start]:top-1/2! twa:data-[side=inline-start]:-right-1 twa:data-[side=inline-start]:-translate-y-1/2 twa:data-[side=left]:top-1/2! twa:data-[side=left]:-right-1 twa:data-[side=left]:-translate-y-1/2 twa:data-[side=right]:top-1/2! twa:data-[side=right]:-left-1 twa:data-[side=right]:-translate-y-1/2 twa:data-[side=top]:-bottom-2.5" })] }) }) }));
21
24
  }
package/src/env.js CHANGED
@@ -2,6 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = {
4
4
  NEXT_PUBLIC_INFINITE_TABLE_LICENSE_KEY: "StartDate=2021-06-29|EndDate=2030-01-01|Owner=Adaptable|Type=distribution|TS=1624971462479|C=137829811,1004007071,2756196225,1839832928,3994409405,636616862" || '',
5
- PUBLISH_TIMESTAMP: 1780405607097 || Date.now(),
6
- VERSION: "23.0.0-canary.2" || '--current-version--',
5
+ PUBLISH_TIMESTAMP: 1780656149577 || Date.now(),
6
+ VERSION: "23.0.0-canary.3" || '--current-version--',
7
7
  };
@@ -1,3 +1,23 @@
1
1
  import { type ClassValue } from 'clsx';
2
2
  export declare function cn(...inputs: ClassValue[]): string;
3
3
  export declare const POPUP_Z_INDEX = "twa:z-[9999999]";
4
+ export declare const getFocusableElements: (root: HTMLElement) => HTMLElement[];
5
+ type CaptureTabEvent = Pick<KeyboardEvent, 'key' | 'shiftKey' | 'preventDefault'>;
6
+ type CaptureTabTarget = HTMLElement | null | {
7
+ current: HTMLElement | null;
8
+ };
9
+ /**
10
+ * Traps Tab / Shift+Tab navigation within `node` so focus cycles between the
11
+ * first and last focusable elements instead of escaping the container.
12
+ *
13
+ * Only acts when the currently focused element is within `node` — popups that
14
+ * portal elsewhere (selects, datepickers) keep managing their own navigation.
15
+ *
16
+ * `node` may be an element directly or a React ref to one.
17
+ *
18
+ * Can be called directly (`captureTab(node, event)`) or curried by omitting the
19
+ * event (`captureTab(node)`) to get a handler that only expects the event.
20
+ */
21
+ export declare function captureTab(node: CaptureTabTarget): (event: CaptureTabEvent) => void;
22
+ export declare function captureTab(node: CaptureTabTarget, event: CaptureTabEvent): void;
23
+ export {};
package/src/lib/utils.js CHANGED
@@ -1,10 +1,57 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.POPUP_Z_INDEX = void 0;
3
+ exports.getFocusableElements = exports.POPUP_Z_INDEX = void 0;
4
4
  exports.cn = cn;
5
+ exports.captureTab = captureTab;
5
6
  const clsx_1 = require("clsx");
6
7
  const twMerge_1 = require("../twMerge");
7
8
  function cn(...inputs) {
8
9
  return (0, twMerge_1.twMerge)((0, clsx_1.clsx)(inputs));
9
10
  }
10
11
  exports.POPUP_Z_INDEX = 'twa:z-[9999999]';
12
+ const FOCUSABLE_SELECTOR = [
13
+ 'a[href]',
14
+ 'button:not([disabled])',
15
+ 'input:not([disabled])',
16
+ 'select:not([disabled])',
17
+ 'textarea:not([disabled])',
18
+ '[tabindex]:not([tabindex="-1"])',
19
+ ].join(',');
20
+ const getFocusableElements = (root) => {
21
+ return Array.from(root.querySelectorAll(FOCUSABLE_SELECTOR)).filter((el) => {
22
+ if (el.hasAttribute('disabled') || el.getAttribute('aria-hidden') === 'true') {
23
+ return false;
24
+ }
25
+ // ignore elements that aren't actually rendered (e.g. display:none)
26
+ return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);
27
+ });
28
+ };
29
+ exports.getFocusableElements = getFocusableElements;
30
+ function captureTab(node, event) {
31
+ if (event === undefined) {
32
+ return (deferredEvent) => captureTab(node, deferredEvent);
33
+ }
34
+ if (event.key !== 'Tab')
35
+ return;
36
+ const root = node instanceof HTMLElement ? node : (node?.current ?? null);
37
+ if (!root)
38
+ return;
39
+ const active = document.activeElement;
40
+ if (!active || !root.contains(active))
41
+ return;
42
+ const focusable = (0, exports.getFocusableElements)(root);
43
+ if (focusable.length === 0)
44
+ return;
45
+ const first = focusable[0];
46
+ const last = focusable[focusable.length - 1];
47
+ if (event.shiftKey) {
48
+ if (active === first) {
49
+ event.preventDefault();
50
+ last.focus();
51
+ }
52
+ }
53
+ else if (active === last) {
54
+ event.preventDefault();
55
+ first.focus();
56
+ }
57
+ }
@@ -4319,12 +4319,17 @@ export declare const ADAPTABLE_METAMODEL: {
4319
4319
  };
4320
4320
  ReportScheduleRanInfo: {
4321
4321
  k: string;
4322
- p: {
4322
+ p: ({
4323
+ n: string;
4324
+ k: string;
4325
+ o?: undefined;
4326
+ r?: undefined;
4327
+ } | {
4323
4328
  n: string;
4324
4329
  k: string;
4325
4330
  o: boolean;
4326
4331
  r: string;
4327
- }[];
4332
+ })[];
4328
4333
  };
4329
4334
  ResolveContextDataContext: {
4330
4335
  k: string;