@tecsinapse/cortex-react 1.9.24 → 1.9.25-beta.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.
@@ -14,9 +14,15 @@ const PopoverProvider = ({
14
14
  children,
15
15
  placement,
16
16
  trigger,
17
+ fallbackPlacements,
17
18
  ...props
18
19
  }) => {
19
- const floatingLogic = useFloatingElement.useFloatingElement({ placement, trigger, ...props });
20
+ const floatingLogic = useFloatingElement.useFloatingElement({
21
+ placement,
22
+ trigger,
23
+ fallbackPlacements,
24
+ ...props
25
+ });
20
26
  return /* @__PURE__ */ React.createElement(Context.Context.Provider, { value: { ...floatingLogic } }, children);
21
27
  };
22
28
 
@@ -12,7 +12,15 @@ const SelectRoot = ({
12
12
  labelExtractor,
13
13
  className
14
14
  }) => {
15
- return /* @__PURE__ */ React.createElement(index.Popover.Root, { placement: "bottom", trigger: "click" }, /* @__PURE__ */ React.createElement(context.SelectContext.Provider, { value: { value, keyExtractor, labelExtractor } }, /* @__PURE__ */ React.createElement(Content.Content, { className }, children)));
15
+ return /* @__PURE__ */ React.createElement(
16
+ index.Popover.Root,
17
+ {
18
+ fallbackPlacements: ["bottom", "top"],
19
+ placement: "bottom",
20
+ trigger: "click"
21
+ },
22
+ /* @__PURE__ */ React.createElement(context.SelectContext.Provider, { value: { value, keyExtractor, labelExtractor } }, /* @__PURE__ */ React.createElement(Content.Content, { className }, children))
23
+ );
16
24
  };
17
25
 
18
26
  exports.SelectRoot = SelectRoot;
@@ -5,6 +5,7 @@ var React = require('react');
5
5
  var io5 = require('react-icons/io5');
6
6
  var index = require('../Popover/index.js');
7
7
  var context = require('./context.js');
8
+ var clsx = require('clsx');
8
9
 
9
10
  const { button } = cortexCore.selectVariants();
10
11
  const SelectTrigger = ({
@@ -23,7 +24,8 @@ const SelectTrigger = ({
23
24
  return labelExtractor(value);
24
25
  }, [label, value]);
25
26
  const { className } = rest;
26
- return /* @__PURE__ */ React.createElement(index.Popover.Trigger, { disabled }, /* @__PURE__ */ React.createElement(
27
+ const hasValue = Array.isArray(value) ? value.length > 0 : !!value;
28
+ return /* @__PURE__ */ React.createElement(index.Popover.Trigger, { disabled }, /* @__PURE__ */ React.createElement("div", { className: "w-full gap-mili" }, /* @__PURE__ */ React.createElement(
27
29
  "button",
28
30
  {
29
31
  className: button({ className }),
@@ -31,9 +33,27 @@ const SelectTrigger = ({
31
33
  role: "button",
32
34
  ...rest
33
35
  },
34
- /* @__PURE__ */ React.createElement("span", { "data-testid": "select-placeholder" }, _placeholder),
36
+ /* @__PURE__ */ React.createElement(
37
+ "span",
38
+ {
39
+ className: clsx({ "mt-mili": hasValue && label }),
40
+ "data-testid": "select-placeholder"
41
+ },
42
+ _placeholder
43
+ ),
35
44
  /* @__PURE__ */ React.createElement(io5.IoChevronDownOutline, null)
36
- ));
45
+ ), hasValue && label ? /* @__PURE__ */ React.createElement(
46
+ "label",
47
+ {
48
+ htmlFor: "select-trigger",
49
+ className: clsx(
50
+ "ml-centi",
51
+ cortexCore.labelStyle({ intent: "default", placeholder })
52
+ ),
53
+ "data-testid": "input-label"
54
+ },
55
+ label
56
+ ) : /* @__PURE__ */ React.createElement(React.Fragment, null)));
37
57
  };
38
58
 
39
59
  exports.SelectTrigger = SelectTrigger;
@@ -10,7 +10,8 @@ const useFloatingElement = ({
10
10
  arrowRef,
11
11
  controlled,
12
12
  isOpen,
13
- setIsOpen
13
+ setIsOpen,
14
+ fallbackPlacements = ["right", "bottom", "left", "top"]
14
15
  }) => {
15
16
  const [openUncontrolled, onOpenChangeUncontrolled] = React.useState(false);
16
17
  const { x, y, strategy, refs, update, context, floatingStyles } = react.useFloating(
@@ -23,7 +24,7 @@ const useFloatingElement = ({
23
24
  react.offset(10),
24
25
  react.flip({
25
26
  flipAlignment: true,
26
- fallbackPlacements: ["right", "bottom", "left", "top"]
27
+ fallbackPlacements
27
28
  }),
28
29
  react.shift(),
29
30
  ...arrowRef ? [react.arrow({ element: arrowRef })] : []
@@ -12,9 +12,15 @@ const PopoverProvider = ({
12
12
  children,
13
13
  placement,
14
14
  trigger,
15
+ fallbackPlacements,
15
16
  ...props
16
17
  }) => {
17
- const floatingLogic = useFloatingElement({ placement, trigger, ...props });
18
+ const floatingLogic = useFloatingElement({
19
+ placement,
20
+ trigger,
21
+ fallbackPlacements,
22
+ ...props
23
+ });
18
24
  return /* @__PURE__ */ React__default.createElement(Context.Provider, { value: { ...floatingLogic } }, children);
19
25
  };
20
26
 
@@ -10,7 +10,15 @@ const SelectRoot = ({
10
10
  labelExtractor,
11
11
  className
12
12
  }) => {
13
- return /* @__PURE__ */ React__default.createElement(Popover.Root, { placement: "bottom", trigger: "click" }, /* @__PURE__ */ React__default.createElement(SelectContext.Provider, { value: { value, keyExtractor, labelExtractor } }, /* @__PURE__ */ React__default.createElement(Content, { className }, children)));
13
+ return /* @__PURE__ */ React__default.createElement(
14
+ Popover.Root,
15
+ {
16
+ fallbackPlacements: ["bottom", "top"],
17
+ placement: "bottom",
18
+ trigger: "click"
19
+ },
20
+ /* @__PURE__ */ React__default.createElement(SelectContext.Provider, { value: { value, keyExtractor, labelExtractor } }, /* @__PURE__ */ React__default.createElement(Content, { className }, children))
21
+ );
14
22
  };
15
23
 
16
24
  export { SelectRoot };
@@ -1,8 +1,9 @@
1
- import { selectVariants } from '@tecsinapse/cortex-core';
1
+ import { selectVariants, labelStyle } from '@tecsinapse/cortex-core';
2
2
  import React__default, { useContext, useMemo } from 'react';
3
3
  import { IoChevronDownOutline } from 'react-icons/io5';
4
4
  import { Popover } from '../Popover/index.js';
5
5
  import { SelectContext } from './context.js';
6
+ import clsx from 'clsx';
6
7
 
7
8
  const { button } = selectVariants();
8
9
  const SelectTrigger = ({
@@ -21,7 +22,8 @@ const SelectTrigger = ({
21
22
  return labelExtractor(value);
22
23
  }, [label, value]);
23
24
  const { className } = rest;
24
- return /* @__PURE__ */ React__default.createElement(Popover.Trigger, { disabled }, /* @__PURE__ */ React__default.createElement(
25
+ const hasValue = Array.isArray(value) ? value.length > 0 : !!value;
26
+ return /* @__PURE__ */ React__default.createElement(Popover.Trigger, { disabled }, /* @__PURE__ */ React__default.createElement("div", { className: "w-full gap-mili" }, /* @__PURE__ */ React__default.createElement(
25
27
  "button",
26
28
  {
27
29
  className: button({ className }),
@@ -29,9 +31,27 @@ const SelectTrigger = ({
29
31
  role: "button",
30
32
  ...rest
31
33
  },
32
- /* @__PURE__ */ React__default.createElement("span", { "data-testid": "select-placeholder" }, _placeholder),
34
+ /* @__PURE__ */ React__default.createElement(
35
+ "span",
36
+ {
37
+ className: clsx({ "mt-mili": hasValue && label }),
38
+ "data-testid": "select-placeholder"
39
+ },
40
+ _placeholder
41
+ ),
33
42
  /* @__PURE__ */ React__default.createElement(IoChevronDownOutline, null)
34
- ));
43
+ ), hasValue && label ? /* @__PURE__ */ React__default.createElement(
44
+ "label",
45
+ {
46
+ htmlFor: "select-trigger",
47
+ className: clsx(
48
+ "ml-centi",
49
+ labelStyle({ intent: "default", placeholder })
50
+ ),
51
+ "data-testid": "input-label"
52
+ },
53
+ label
54
+ ) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null)));
35
55
  };
36
56
 
37
57
  export { SelectTrigger };
@@ -8,7 +8,8 @@ const useFloatingElement = ({
8
8
  arrowRef,
9
9
  controlled,
10
10
  isOpen,
11
- setIsOpen
11
+ setIsOpen,
12
+ fallbackPlacements = ["right", "bottom", "left", "top"]
12
13
  }) => {
13
14
  const [openUncontrolled, onOpenChangeUncontrolled] = useState(false);
14
15
  const { x, y, strategy, refs, update, context, floatingStyles } = useFloating(
@@ -21,7 +22,7 @@ const useFloatingElement = ({
21
22
  offset(10),
22
23
  flip({
23
24
  flipAlignment: true,
24
- fallbackPlacements: ["right", "bottom", "left", "top"]
25
+ fallbackPlacements
25
26
  }),
26
27
  shift(),
27
28
  ...arrowRef ? [arrow({ element: arrowRef })] : []
@@ -4,14 +4,16 @@ export interface ControlledProps {
4
4
  controlled: true;
5
5
  isOpen: boolean;
6
6
  setIsOpen: Dispatch<SetStateAction<boolean>>;
7
+ fallbackPlacements?: Array<Placement>;
7
8
  }
8
9
  export interface UncontrolledProviderProps {
9
10
  children: ReactNode;
10
11
  placement?: Placement;
12
+ fallbackPlacements?: Array<Placement>;
11
13
  trigger?: 'hover' | 'click';
12
14
  controlled?: false;
13
15
  }
14
16
  export interface ControlledPopoverProviderProps extends Omit<UncontrolledProviderProps, 'controlled'>, ControlledProps {
15
17
  }
16
18
  export type PopoverProviderProps = UncontrolledProviderProps | ControlledPopoverProviderProps;
17
- export declare const PopoverProvider: ({ children, placement, trigger, ...props }: PopoverProviderProps) => React.JSX.Element;
19
+ export declare const PopoverProvider: ({ children, placement, trigger, fallbackPlacements, ...props }: PopoverProviderProps) => React.JSX.Element;
@@ -2,5 +2,5 @@ export declare const Popover: {
2
2
  Root: ({ children, placement, trigger, ...props }: import("./Root").PopoverRootProps) => import("react").JSX.Element;
3
3
  Trigger: ({ children, disabled }: import("./Trigger").PopoverTriggerProps) => import("react").FunctionComponentElement<any>;
4
4
  Content: ({ children, className, modal, ...rest }: import("./Content").PopoverContentProps) => import("react").JSX.Element;
5
- Provider: ({ children, placement, trigger, ...props }: import("./Provider").PopoverProviderProps) => import("react").JSX.Element;
5
+ Provider: ({ children, placement, trigger, fallbackPlacements, ...props }: import("./Provider").PopoverProviderProps) => import("react").JSX.Element;
6
6
  };
@@ -12,8 +12,9 @@ export interface FloatingElementProps {
12
12
  controlled?: boolean;
13
13
  isOpen?: boolean;
14
14
  setIsOpen?: Dispatch<SetStateAction<boolean>> | undefined;
15
+ fallbackPlacements?: Array<Placement>;
15
16
  }
16
- export declare const useFloatingElement: ({ placement, trigger, delay, arrowRef, controlled, isOpen, setIsOpen, }: FloatingElementProps) => {
17
+ export declare const useFloatingElement: ({ placement, trigger, delay, arrowRef, controlled, isOpen, setIsOpen, fallbackPlacements, }: FloatingElementProps) => {
17
18
  isOpen: boolean;
18
19
  setIsOpen: Dispatch<SetStateAction<boolean>>;
19
20
  x: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tecsinapse/cortex-react",
3
- "version": "1.9.24",
3
+ "version": "1.9.25-beta.0",
4
4
  "description": "React components based in @tecsinapse/cortex-core",
5
5
  "license": "MIT",
6
6
  "main": "dist/esm/index.js",
@@ -48,5 +48,5 @@
48
48
  "react-dom": ">=18.0.0",
49
49
  "tailwind": ">=3.3.0"
50
50
  },
51
- "gitHead": "9ab1bee67dfccf8804ef04d4c1ba50bfe0959a78"
51
+ "gitHead": "966914868091fb267bff357e328d3d84aadc8c40"
52
52
  }