@oneplatformdev/ui 0.1.99-beta.272 → 0.1.99-beta.274

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.
@@ -1,25 +1,25 @@
1
- import { jsx as r, jsxs as p, Fragment as b } from "react/jsx-runtime";
2
- import { DEFAULT_COMBOBOX_TYPE as h } from "./Combobox.types.js";
3
- import { cn as d } from "@oneplatformdev/utils";
1
+ import { jsx as r, jsxs as p, Fragment as h } from "react/jsx-runtime";
2
+ import { DEFAULT_COMBOBOX_TYPE as g } from "./Combobox.types.js";
3
+ import { cn as u } from "@oneplatformdev/utils";
4
4
  import { XIcon as f, ChevronDown as v } from "lucide-react";
5
5
  import { useMemo as w } from "react";
6
6
  import { PopoverTrigger as x } from "../Popover/Popover.js";
7
7
  import { Button as y } from "../Button/Button.js";
8
8
  import { LoadingMask as C } from "../LoadingMask/LoadingMask.js";
9
- import { ScrollArea as N } from "../ScrollArea/ScrollArea.js";
10
- const g = (o) => {
9
+ import { ScrollArea as F } from "../ScrollArea/ScrollArea.js";
10
+ const b = (o) => {
11
11
  const { value: n, flattenOptions: a = [], selectedOptions: t = /* @__PURE__ */ new Map() } = o;
12
12
  return w(() => {
13
13
  if (!n) return [];
14
- const c = Array.from(t.values()), l = Array.isArray(n) ? n : [n], u = [...a.filter((i) => l.find((s) => String(s).toLowerCase() === String(i.value).toLowerCase())), ...c].reduce((i, s) => (!s || i.has(s.value) || i.set(s.value, { ...s, label: s.label || s.value }), i), /* @__PURE__ */ new Map());
15
- return u.size ? Array.from(u.values()) : l.map((i) => ({ value: i, label: String(i) }));
14
+ const c = Array.from(t.values()), l = Array.isArray(n) ? n : [n], d = [...a.filter((i) => l.find((s) => String(s).toLowerCase() === String(i.value).toLowerCase())), ...c].reduce((i, s) => (!s || i.has(s.value) || i.set(s.value, { ...s, label: s.label || s.value }), i), /* @__PURE__ */ new Map());
15
+ return d.size ? Array.from(d.values()) : l.map((i) => ({ value: i, label: String(i) }));
16
16
  }, [n, a, t]);
17
- }, k = (o) => {
18
- const { type: n = h, placeholder: a, onSelect: t, open: c } = o, l = g(o);
17
+ }, N = (o) => {
18
+ const { type: n = g, placeholder: a, onSelect: t, open: c } = o, l = b(o);
19
19
  return l.length ? n === "single" ? /* @__PURE__ */ r("span", { className: "truncate overflow-hidden whitespace-nowrap break-words line-clamp-1 pr-8", children: l[0].label }) : n === "multi" ? /* @__PURE__ */ r(
20
- N,
20
+ F,
21
21
  {
22
- className: d(
22
+ className: u(
23
23
  "w-full h-auto min-h-5 max-h-20.25",
24
24
  "overflow-y-auto overflow-x-hidden"
25
25
  ),
@@ -31,7 +31,7 @@ const g = (o) => {
31
31
  children: /* @__PURE__ */ r("div", { className: "p-0 gap-1 flex flex-wrap w-full pr-11", children: l.map((e) => e ? /* @__PURE__ */ p(
32
32
  "div",
33
33
  {
34
- className: d(
34
+ className: u(
35
35
  "flex items-center justify-center",
36
36
  "py-1 px-2 min-h-5 w-fit gap-1",
37
37
  "bg-[#9368FF] rounded-sm",
@@ -39,8 +39,8 @@ const g = (o) => {
39
39
  "cursor-pointer",
40
40
  "truncate"
41
41
  ),
42
- onClick: (u) => {
43
- c && (u.preventDefault(), u.stopPropagation(), t?.(e));
42
+ onClick: (d) => {
43
+ c && (d.preventDefault(), d.stopPropagation(), t?.(e));
44
44
  },
45
45
  children: [
46
46
  /* @__PURE__ */ r("span", { className: "whitespace-pre-wrap wrap-break-word line-clamp-1", children: e.label }),
@@ -57,7 +57,7 @@ const g = (o) => {
57
57
  "div",
58
58
  {
59
59
  ...l,
60
- className: d(
60
+ className: u(
61
61
  "absolute top-1/2 -translate-y-1/2 right-1",
62
62
  "flex items-center justify-center",
63
63
  "w-10 h-10 [&_svg]:size-5!",
@@ -71,8 +71,8 @@ const g = (o) => {
71
71
  children: n
72
72
  }
73
73
  );
74
- }, A = (o) => {
75
- const { open: n, onClearSelections: a } = o, t = g(o);
74
+ }, k = (o) => {
75
+ const { open: n, onClearSelections: a } = o, t = b(o);
76
76
  return n ? t.length ? /* @__PURE__ */ r(m, { onClick: () => a?.(), children: /* @__PURE__ */ r(f, {}) }) : null : /* @__PURE__ */ r(m, { prevented: !1, children: /* @__PURE__ */ r(v, {}) });
77
77
  }, E = (o) => {
78
78
  const {
@@ -90,13 +90,13 @@ const g = (o) => {
90
90
  color: "secondary",
91
91
  role: "combobox",
92
92
  "aria-expanded": a,
93
- className: d(
93
+ className: u(
94
94
  "relative w-full justify-between bg-transparent",
95
95
  !e && "font-normal text-sm",
96
96
  "border border-border",
97
- a && "border-1 outline-hidden ring-1 ring-ring",
97
+ a && "border-1 border-[#9368FF] outline-hidden ring-0 hover:border-[#9368FF] hover:bg-transparent",
98
98
  n === "multi" && "pr-0",
99
- "focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring",
99
+ "focus-visible:outline-hidden focus-visible:ring-0 focus-visible:border-[#9368FF]",
100
100
  e && "p-0",
101
101
  e && a && "p-0 border-1 ring-0 ring-transparent"
102
102
  ),
@@ -104,9 +104,9 @@ const g = (o) => {
104
104
  children: [
105
105
  t && /* @__PURE__ */ r(C, { fullWidth: !0 }),
106
106
  !t && e && e(c),
107
- !t && !e && /* @__PURE__ */ p(b, { children: [
108
- /* @__PURE__ */ r(k, { ...o }),
109
- /* @__PURE__ */ r(A, { ...o })
107
+ !t && !e && /* @__PURE__ */ p(h, { children: [
108
+ /* @__PURE__ */ r(N, { ...o }),
109
+ /* @__PURE__ */ r(k, { ...o })
110
110
  ] })
111
111
  ]
112
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ComboboxRenderTrigger.js","sources":["../../src/Combobox/ComboboxRenderTrigger.tsx"],"sourcesContent":["import {\r\n ComboboxCallbackStateParamsRenderHandler,\r\n ComboboxCallbackStateParamsUnion,\r\n ComboboxOption,\r\n ComboboxProps, ComboboxSelectedType,\r\n DEFAULT_COMBOBOX_TYPE\r\n} from \"./Combobox.types\";\r\nimport { Button } from \"../Button\";\r\nimport { cn } from \"@oneplatformdev/utils\";\r\nimport { LoadingMask } from \"../LoadingMask\";\r\nimport { ChevronDown, XIcon } from \"lucide-react\";\r\nimport { PopoverTrigger } from \"../Popover\";\r\nimport { HTMLAttributes, useMemo } from \"react\";\r\nimport { ScrollArea } from \"../ScrollArea\";\r\n\r\ntype ComboboxRenderTriggerProps<Data extends object = object> = {\r\n type: ComboboxSelectedType,\r\n value: ComboboxProps<Data, 'single'>['value'] | ComboboxProps<Data, 'multi'>['value'];\r\n open: boolean;\r\n initialLoading: boolean;\r\n flattenOptions: ComboboxOption<Data>[];\r\n selectedOptions?: Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>;\r\n onSelect?: (option: ComboboxOption<Data>) => void;\r\n onClearSelections?: () => void;\r\n\r\n callbackStateParams: ComboboxCallbackStateParamsUnion<Data>;\r\n renderTrigger?: ComboboxCallbackStateParamsRenderHandler<Data>;\r\n\r\n placeholder?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nconst useValues = <Data extends object>(\r\n props: ComboboxRenderTriggerProps<Data>\r\n): ComboboxOption<Data>[] => {\r\n const { value, flattenOptions = [], selectedOptions = new Map() } = props;\r\n return useMemo(() => {\r\n if (!value) return [];\r\n const selectedOption = Array.from(selectedOptions.values());\r\n const vls = Array.isArray(value) ? value : [ value ];\r\n const flattenedOptionValues = flattenOptions.filter(o => {\r\n return vls.find(v => String(v).toLowerCase() === String(o.value).toLowerCase())\r\n });\r\n\r\n const labels = [ ...flattenedOptionValues, ...selectedOption ]\r\n .reduce<Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>>((acc, o) => {\r\n if (!o) return acc;\r\n if (acc.has(o.value)) return acc;\r\n acc.set(o.value, { ...o, label: o.label || o.value });\r\n return acc;\r\n }, new Map())\r\n if (!labels.size) return vls.map(v => ({ value: v, label: String(v) }));\r\n return Array.from(labels.values());\r\n }, [ value, flattenOptions, selectedOptions ])\r\n}\r\n\r\nconst ComboboxRenderTriggerLabel = <Data extends object = object>(\r\n props: ComboboxRenderTriggerProps<Data>\r\n) => {\r\n const { type = DEFAULT_COMBOBOX_TYPE, placeholder, onSelect, open } = props;\r\n const values = useValues(props);\r\n\r\n if (!values.length) {\r\n return (\r\n <span className=\"text-gray-400 whitespace-pre-wrap break-words line-clamp-1 pr-11\">\r\n {placeholder}\r\n </span>\r\n )\r\n }\r\n\r\n if (type === 'single') {\r\n return (\r\n <span className=\"truncate overflow-hidden whitespace-nowrap break-words line-clamp-1 pr-8\">\r\n {values[0].label}\r\n </span>\r\n )\r\n }\r\n\r\n if (type === 'multi') {\r\n return (\r\n <ScrollArea\r\n className={cn(\r\n \"w-full h-auto min-h-5 max-h-20.25\",\r\n 'overflow-y-auto overflow-x-hidden',\r\n )}\r\n slotProps={{\r\n viewport: {\r\n className: '[&>div]:block!',\r\n }\r\n }}\r\n >\r\n <div className=\"p-0 gap-1 flex flex-wrap w-full pr-11\">\r\n {values.map((item) => {\r\n if (!item) return null;\r\n return (\r\n <div\r\n key={item.value}\r\n className={cn(\r\n 'flex items-center justify-center',\r\n 'py-1 px-2 min-h-5 w-fit gap-1',\r\n 'bg-[#9368FF] rounded-sm',\r\n 'text-[#FCFCFC] leading-none text-xs font-semibold',\r\n 'cursor-pointer',\r\n 'truncate',\r\n )}\r\n onClick={(e) => {\r\n if(!open) return;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n onSelect?.(item)\r\n }}\r\n >\r\n <span className='whitespace-pre-wrap wrap-break-word line-clamp-1'>\r\n {item.label}\r\n </span>\r\n <XIcon className='size-3! shrink-0 text-white!'/>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </ScrollArea>\r\n )\r\n }\r\n\r\n return 'No supported to render'\r\n}\r\n\r\nconst EndAdornmentWrapper = (\r\n props: HTMLAttributes<HTMLDivElement> & {\r\n prevented?: boolean;\r\n }\r\n) => {\r\n const { children, prevented = true, onClick, className, ...rest } = props;\r\n return (\r\n <div\r\n {...rest}\r\n className={cn(\r\n 'absolute top-1/2 -translate-y-1/2 right-1',\r\n 'flex items-center justify-center',\r\n 'w-10 h-10 [&_svg]:size-5!',\r\n 'opacity-50 cursor-pointer hover:opacity-100',\r\n className,\r\n )}\r\n onClick={(e) => {\r\n if (!prevented) return onClick?.(e);\r\n e.stopPropagation();\r\n e.preventDefault();\r\n onClick?.(e);\r\n }}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\nconst ComboboxRenderTriggerEndAdornment = <Data extends object = object>(\r\n props: ComboboxRenderTriggerProps<Data>\r\n) => {\r\n const { open, onClearSelections } = props;\r\n const values = useValues(props);\r\n\r\n if (!open) {\r\n return (\r\n <EndAdornmentWrapper prevented={false}>\r\n <ChevronDown/>\r\n </EndAdornmentWrapper>\r\n )\r\n }\r\n\r\n if (!values.length) return null\r\n\r\n return (\r\n <EndAdornmentWrapper onClick={() => onClearSelections?.()}>\r\n <XIcon/>\r\n </EndAdornmentWrapper>\r\n )\r\n}\r\n\r\nexport const ComboboxRenderTrigger = <Data extends object>(\r\n props: ComboboxRenderTriggerProps<Data>\r\n) => {\r\n const {\r\n type,\r\n open,\r\n initialLoading,\r\n callbackStateParams,\r\n disabled,\r\n renderTrigger,\r\n } = props;\r\n\r\n return (\r\n <PopoverTrigger asChild className=\"border-input\">\r\n <Button\r\n variant={renderTrigger ? 'none' : 'contained'}\r\n color='secondary'\r\n role=\"combobox\"\r\n aria-expanded={open}\r\n className={cn(\r\n 'relative w-full justify-between bg-transparent',\r\n !renderTrigger && 'font-normal text-sm',\r\n 'border border-border',\r\n open && 'border-1 outline-hidden ring-1 ring-ring',\r\n type === 'multi' && 'pr-0',\r\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring',\r\n renderTrigger && 'p-0',\r\n renderTrigger && open && 'p-0 border-1 ring-0 ring-transparent',\r\n )}\r\n disabled={disabled || initialLoading}\r\n >\r\n {initialLoading && <LoadingMask fullWidth/>}\r\n {!initialLoading && renderTrigger && renderTrigger(callbackStateParams)}\r\n {!initialLoading && !renderTrigger && (\r\n <>\r\n <ComboboxRenderTriggerLabel {...props} />\r\n <ComboboxRenderTriggerEndAdornment {...props} />\r\n </>\r\n )}\r\n </Button>\r\n </PopoverTrigger>\r\n )\r\n}\r\n"],"names":["useValues","props","value","flattenOptions","selectedOptions","useMemo","selectedOption","vls","labels","o","v","acc","ComboboxRenderTriggerLabel","type","DEFAULT_COMBOBOX_TYPE","placeholder","onSelect","open","values","jsx","ScrollArea","cn","item","jsxs","e","XIcon","EndAdornmentWrapper","children","prevented","onClick","className","rest","ComboboxRenderTriggerEndAdornment","onClearSelections","ChevronDown","ComboboxRenderTrigger","initialLoading","callbackStateParams","disabled","renderTrigger","PopoverTrigger","Button","LoadingMask","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"ComboboxRenderTrigger.js","sources":["../../src/Combobox/ComboboxRenderTrigger.tsx"],"sourcesContent":["import {\r\n ComboboxCallbackStateParamsRenderHandler,\r\n ComboboxCallbackStateParamsUnion,\r\n ComboboxOption,\r\n ComboboxProps, ComboboxSelectedType,\r\n DEFAULT_COMBOBOX_TYPE\r\n} from \"./Combobox.types\";\r\nimport { Button } from \"../Button\";\r\nimport { cn } from \"@oneplatformdev/utils\";\r\nimport { LoadingMask } from \"../LoadingMask\";\r\nimport { ChevronDown, XIcon } from \"lucide-react\";\r\nimport { PopoverTrigger } from \"../Popover\";\r\nimport { HTMLAttributes, useMemo } from \"react\";\r\nimport { ScrollArea } from \"../ScrollArea\";\r\n\r\ntype ComboboxRenderTriggerProps<Data extends object = object> = {\r\n type: ComboboxSelectedType,\r\n value: ComboboxProps<Data, 'single'>['value'] | ComboboxProps<Data, 'multi'>['value'];\r\n open: boolean;\r\n initialLoading: boolean;\r\n flattenOptions: ComboboxOption<Data>[];\r\n selectedOptions?: Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>;\r\n onSelect?: (option: ComboboxOption<Data>) => void;\r\n onClearSelections?: () => void;\r\n\r\n callbackStateParams: ComboboxCallbackStateParamsUnion<Data>;\r\n renderTrigger?: ComboboxCallbackStateParamsRenderHandler<Data>;\r\n\r\n placeholder?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nconst useValues = <Data extends object>(\r\n props: ComboboxRenderTriggerProps<Data>\r\n): ComboboxOption<Data>[] => {\r\n const { value, flattenOptions = [], selectedOptions = new Map() } = props;\r\n return useMemo(() => {\r\n if (!value) return [];\r\n const selectedOption = Array.from(selectedOptions.values());\r\n const vls = Array.isArray(value) ? value : [ value ];\r\n const flattenedOptionValues = flattenOptions.filter(o => {\r\n return vls.find(v => String(v).toLowerCase() === String(o.value).toLowerCase())\r\n });\r\n\r\n const labels = [ ...flattenedOptionValues, ...selectedOption ]\r\n .reduce<Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>>((acc, o) => {\r\n if (!o) return acc;\r\n if (acc.has(o.value)) return acc;\r\n acc.set(o.value, { ...o, label: o.label || o.value });\r\n return acc;\r\n }, new Map())\r\n if (!labels.size) return vls.map(v => ({ value: v, label: String(v) }));\r\n return Array.from(labels.values());\r\n }, [ value, flattenOptions, selectedOptions ])\r\n}\r\n\r\nconst ComboboxRenderTriggerLabel = <Data extends object = object>(\r\n props: ComboboxRenderTriggerProps<Data>\r\n) => {\r\n const { type = DEFAULT_COMBOBOX_TYPE, placeholder, onSelect, open } = props;\r\n const values = useValues(props);\r\n\r\n if (!values.length) {\r\n return (\r\n <span className=\"text-gray-400 whitespace-pre-wrap break-words line-clamp-1 pr-11\">\r\n {placeholder}\r\n </span>\r\n )\r\n }\r\n\r\n if (type === 'single') {\r\n return (\r\n <span className=\"truncate overflow-hidden whitespace-nowrap break-words line-clamp-1 pr-8\">\r\n {values[0].label}\r\n </span>\r\n )\r\n }\r\n\r\n if (type === 'multi') {\r\n return (\r\n <ScrollArea\r\n className={cn(\r\n \"w-full h-auto min-h-5 max-h-20.25\",\r\n 'overflow-y-auto overflow-x-hidden',\r\n )}\r\n slotProps={{\r\n viewport: {\r\n className: '[&>div]:block!',\r\n }\r\n }}\r\n >\r\n <div className=\"p-0 gap-1 flex flex-wrap w-full pr-11\">\r\n {values.map((item) => {\r\n if (!item) return null;\r\n return (\r\n <div\r\n key={item.value}\r\n className={cn(\r\n 'flex items-center justify-center',\r\n 'py-1 px-2 min-h-5 w-fit gap-1',\r\n 'bg-[#9368FF] rounded-sm',\r\n 'text-[#FCFCFC] leading-none text-xs font-semibold',\r\n 'cursor-pointer',\r\n 'truncate',\r\n )}\r\n onClick={(e) => {\r\n if(!open) return;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n onSelect?.(item)\r\n }}\r\n >\r\n <span className='whitespace-pre-wrap wrap-break-word line-clamp-1'>\r\n {item.label}\r\n </span>\r\n <XIcon className='size-3! shrink-0 text-white!'/>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </ScrollArea>\r\n )\r\n }\r\n\r\n return 'No supported to render'\r\n}\r\n\r\nconst EndAdornmentWrapper = (\r\n props: HTMLAttributes<HTMLDivElement> & {\r\n prevented?: boolean;\r\n }\r\n) => {\r\n const { children, prevented = true, onClick, className, ...rest } = props;\r\n return (\r\n <div\r\n {...rest}\r\n className={cn(\r\n 'absolute top-1/2 -translate-y-1/2 right-1',\r\n 'flex items-center justify-center',\r\n 'w-10 h-10 [&_svg]:size-5!',\r\n 'opacity-50 cursor-pointer hover:opacity-100',\r\n className,\r\n )}\r\n onClick={(e) => {\r\n if (!prevented) return onClick?.(e);\r\n e.stopPropagation();\r\n e.preventDefault();\r\n onClick?.(e);\r\n }}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\nconst ComboboxRenderTriggerEndAdornment = <Data extends object = object>(\r\n props: ComboboxRenderTriggerProps<Data>\r\n) => {\r\n const { open, onClearSelections } = props;\r\n const values = useValues(props);\r\n\r\n if (!open) {\r\n return (\r\n <EndAdornmentWrapper prevented={false}>\r\n <ChevronDown/>\r\n </EndAdornmentWrapper>\r\n )\r\n }\r\n\r\n if (!values.length) return null\r\n\r\n return (\r\n <EndAdornmentWrapper onClick={() => onClearSelections?.()}>\r\n <XIcon/>\r\n </EndAdornmentWrapper>\r\n )\r\n}\r\n\r\nexport const ComboboxRenderTrigger = <Data extends object>(\r\n props: ComboboxRenderTriggerProps<Data>\r\n) => {\r\n const {\r\n type,\r\n open,\r\n initialLoading,\r\n callbackStateParams,\r\n disabled,\r\n renderTrigger,\r\n } = props;\r\n\r\n return (\r\n <PopoverTrigger asChild className=\"border-input\">\r\n <Button\r\n variant={renderTrigger ? 'none' : 'contained'}\r\n color='secondary'\r\n role=\"combobox\"\r\n aria-expanded={open}\r\n className={cn(\r\n 'relative w-full justify-between bg-transparent',\r\n !renderTrigger && 'font-normal text-sm',\r\n 'border border-border',\r\n open && 'border-1 border-[#9368FF] outline-hidden ring-0 hover:border-[#9368FF] hover:bg-transparent',\r\n type === 'multi' && 'pr-0',\r\n 'focus-visible:outline-hidden focus-visible:ring-0 focus-visible:border-[#9368FF]',\r\n renderTrigger && 'p-0',\r\n renderTrigger && open && 'p-0 border-1 ring-0 ring-transparent',\r\n )}\r\n disabled={disabled || initialLoading}\r\n >\r\n {initialLoading && <LoadingMask fullWidth/>}\r\n {!initialLoading && renderTrigger && renderTrigger(callbackStateParams)}\r\n {!initialLoading && !renderTrigger && (\r\n <>\r\n <ComboboxRenderTriggerLabel {...props} />\r\n <ComboboxRenderTriggerEndAdornment {...props} />\r\n </>\r\n )}\r\n </Button>\r\n </PopoverTrigger>\r\n )\r\n}\r\n"],"names":["useValues","props","value","flattenOptions","selectedOptions","useMemo","selectedOption","vls","labels","o","v","acc","ComboboxRenderTriggerLabel","type","DEFAULT_COMBOBOX_TYPE","placeholder","onSelect","open","values","jsx","ScrollArea","cn","item","jsxs","e","XIcon","EndAdornmentWrapper","children","prevented","onClick","className","rest","ComboboxRenderTriggerEndAdornment","onClearSelections","ChevronDown","ComboboxRenderTrigger","initialLoading","callbackStateParams","disabled","renderTrigger","PopoverTrigger","Button","LoadingMask","Fragment"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../src/DatePicker/DatePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,eAAO,MAAM,UAAU,2FAyCtB,CAAC"}
1
+ {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../src/DatePicker/DatePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,eAAO,MAAM,UAAU,2FA4CtB,CAAC"}
@@ -1,53 +1,55 @@
1
- import { jsxs as o, jsx as r } from "react/jsx-runtime";
2
- import * as i from "react";
3
- import { format as d } from "date-fns";
4
- import { Calendar as s } from "lucide-react";
5
- import { cn as c } from "@oneplatformdev/utils";
6
- import { uk as t } from "date-fns/locale";
7
- import { Button as f } from "../Button/Button.js";
8
- import { Calendar as p } from "../Calendar/Calendar.js";
9
- import { Popover as u, PopoverTrigger as h, PopoverContent as y } from "../Popover/Popover.js";
10
- const g = i.forwardRef(
11
- (a, l) => {
1
+ import { jsxs as t, jsx as e } from "react/jsx-runtime";
2
+ import * as a from "react";
3
+ import { format as c } from "date-fns";
4
+ import { Calendar as f } from "lucide-react";
5
+ import { cn as p } from "@oneplatformdev/utils";
6
+ import { uk as n } from "date-fns/locale";
7
+ import { Button as u } from "../Button/Button.js";
8
+ import { Calendar as h } from "../Calendar/Calendar.js";
9
+ import { Popover as g, PopoverTrigger as b, PopoverContent as y } from "../Popover/Popover.js";
10
+ const v = a.forwardRef(
11
+ (i, l) => {
12
12
  const {
13
- selectedDate: e,
14
- onDateChange: m,
15
- disabled: n = !1
16
- } = a;
17
- return /* @__PURE__ */ o(u, { children: [
18
- /* @__PURE__ */ r(h, { asChild: !0, children: /* @__PURE__ */ o(
19
- f,
13
+ selectedDate: o,
14
+ onDateChange: s,
15
+ disabled: d = !1
16
+ } = i, [r, m] = a.useState(!1);
17
+ return /* @__PURE__ */ t(g, { open: r, onOpenChange: m, children: [
18
+ /* @__PURE__ */ e(b, { asChild: !0, children: /* @__PURE__ */ t(
19
+ u,
20
20
  {
21
21
  ref: l,
22
- disabled: n,
22
+ disabled: d,
23
23
  variant: "outline-solid",
24
- className: c(
24
+ className: p(
25
25
  "w-full justify-start text-left font-normal border h-10",
26
- !e && "text-muted-foreground"
26
+ !o && "text-muted-foreground",
27
+ "focus-visible:outline-hidden focus-visible:ring-0 focus-visible:border-[#9368FF]",
28
+ r && "outline-hidden ring-0 border-[#9368FF]"
27
29
  ),
28
30
  children: [
29
- e ? d(e, "LLL dd, y", { locale: t }) : /* @__PURE__ */ r("span", { children: "dd/mm/yyyy" }),
30
- /* @__PURE__ */ r(s, { className: "mr-2 h-4 w-4 ml-auto" })
31
+ o ? c(o, "LLL dd, y", { locale: n }) : /* @__PURE__ */ e("span", { children: "dd/mm/yyyy" }),
32
+ /* @__PURE__ */ e(f, { className: "mr-2 h-4 w-4 ml-auto" })
31
33
  ]
32
34
  }
33
35
  ) }),
34
- /* @__PURE__ */ r(y, { align: "start", className: "w-auto p-0", children: /* @__PURE__ */ r(
35
- p,
36
+ /* @__PURE__ */ e(y, { align: "start", className: "w-auto p-0", children: /* @__PURE__ */ e(
37
+ h,
36
38
  {
37
39
  mode: "single",
38
40
  captionLayout: "dropdown-buttons",
39
- selected: e,
40
- onSelect: m,
41
+ selected: o,
42
+ onSelect: s,
41
43
  fromYear: 1960,
42
44
  toYear: 2030,
43
- locale: t
45
+ locale: n
44
46
  }
45
47
  ) })
46
48
  ] });
47
49
  }
48
50
  );
49
- g.displayName = "DatePicker";
51
+ v.displayName = "DatePicker";
50
52
  export {
51
- g as DatePicker
53
+ v as DatePicker
52
54
  };
53
55
  //# sourceMappingURL=DatePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sources":["../../src/DatePicker/DatePicker.tsx"],"sourcesContent":["'use client';\r\n\r\nimport * as React from 'react';\r\nimport { format } from 'date-fns';\r\nimport { Calendar as CalendarIcon } from 'lucide-react';\r\nimport { cn } from '@oneplatformdev/utils';\r\nimport { Button } from '../Button';\r\nimport { Calendar } from '../Calendar';\r\nimport { Popover, PopoverContent, PopoverTrigger } from '../Popover';\r\nimport { uk } from 'date-fns/locale';\r\nimport { DatePickerProps } from './DatePicker.types';\r\n\r\nexport const DatePicker = React.forwardRef<HTMLButtonElement, DatePickerProps>(\r\n (props, ref) => {\r\n const {\r\n selectedDate,\r\n onDateChange,\r\n disabled = false\r\n } = props;\r\n return (\r\n <Popover>\r\n <PopoverTrigger asChild>\r\n <Button\r\n ref={ref}\r\n disabled={disabled}\r\n variant={'outline-solid'}\r\n className={cn(\r\n 'w-full justify-start text-left font-normal border h-10',\r\n !selectedDate && 'text-muted-foreground'\r\n )}\r\n >\r\n {selectedDate ? (\r\n format(selectedDate, 'LLL dd, y', { locale: uk })\r\n ) : (\r\n <span>dd/mm/yyyy</span>\r\n )}\r\n <CalendarIcon className=\"mr-2 h-4 w-4 ml-auto\" />\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent align=\"start\" className=\"w-auto p-0\">\r\n <Calendar\r\n mode=\"single\"\r\n captionLayout=\"dropdown-buttons\"\r\n selected={selectedDate}\r\n onSelect={onDateChange}\r\n fromYear={1960}\r\n toYear={2030}\r\n locale={uk}\r\n />\r\n </PopoverContent>\r\n </Popover>\r\n );\r\n }\r\n);\r\n\r\nDatePicker.displayName = 'DatePicker';\r\n"],"names":["DatePicker","React","props","ref","selectedDate","onDateChange","disabled","Popover","jsx","PopoverTrigger","jsxs","Button","cn","format","uk","CalendarIcon","PopoverContent","Calendar"],"mappings":";;;;;;;;;AAYO,MAAMA,IAAaC,EAAM;AAAA,EAC9B,CAACC,GAAOC,MAAQ;AACd,UAAM;AAAA,MACJ,cAAAC;AAAA,MACA,cAAAC;AAAA,MACA,UAAAC,IAAW;AAAA,IAAA,IACTJ;AACJ,6BACGK,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAC,EAACC,GAAA,EAAe,SAAO,IACrB,UAAA,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,KAAAR;AAAA,UACA,UAAAG;AAAA,UACA,SAAS;AAAA,UACT,WAAWM;AAAA,YACT;AAAA,YACA,CAACR,KAAgB;AAAA,UAAA;AAAA,UAGlB,UAAA;AAAA,YAAAA,IACCS,EAAOT,GAAc,aAAa,EAAE,QAAQU,GAAI,IAEhD,gBAAAN,EAAC,QAAA,EAAK,UAAA,aAAA,CAAU;AAAA,YAElB,gBAAAA,EAACO,GAAA,EAAa,WAAU,uBAAA,CAAuB;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA,GAEnD;AAAA,MACA,gBAAAP,EAACQ,GAAA,EAAe,OAAM,SAAQ,WAAU,cACtC,UAAA,gBAAAR;AAAA,QAACS;AAAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,eAAc;AAAA,UACd,UAAUb;AAAA,UACV,UAAUC;AAAA,UACV,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,QAAQS;AAAA,QAAA;AAAA,MAAA,EACV,CACF;AAAA,IAAA,GACF;AAAA,EAEJ;AACF;AAEAd,EAAW,cAAc;"}
1
+ {"version":3,"file":"DatePicker.js","sources":["../../src/DatePicker/DatePicker.tsx"],"sourcesContent":["'use client';\r\n\r\nimport * as React from 'react';\r\nimport { format } from 'date-fns';\r\nimport { Calendar as CalendarIcon } from 'lucide-react';\r\nimport { cn } from '@oneplatformdev/utils';\r\nimport { Button } from '../Button';\r\nimport { Calendar } from '../Calendar';\r\nimport { Popover, PopoverContent, PopoverTrigger } from '../Popover';\r\nimport { uk } from 'date-fns/locale';\r\nimport { DatePickerProps } from './DatePicker.types';\r\n\r\nexport const DatePicker = React.forwardRef<HTMLButtonElement, DatePickerProps>(\r\n (props, ref) => {\r\n const {\r\n selectedDate,\r\n onDateChange,\r\n disabled = false\r\n } = props;\r\n const [open, setOpen] = React.useState(false);\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild>\r\n <Button\r\n ref={ref}\r\n disabled={disabled}\r\n variant={'outline-solid'}\r\n className={cn(\r\n 'w-full justify-start text-left font-normal border h-10',\r\n !selectedDate && 'text-muted-foreground',\r\n 'focus-visible:outline-hidden focus-visible:ring-0 focus-visible:border-[#9368FF]',\r\n open && 'outline-hidden ring-0 border-[#9368FF]'\r\n )}\r\n >\r\n {selectedDate ? (\r\n format(selectedDate, 'LLL dd, y', { locale: uk })\r\n ) : (\r\n <span>dd/mm/yyyy</span>\r\n )}\r\n <CalendarIcon className=\"mr-2 h-4 w-4 ml-auto\" />\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent align=\"start\" className=\"w-auto p-0\">\r\n <Calendar\r\n mode=\"single\"\r\n captionLayout=\"dropdown-buttons\"\r\n selected={selectedDate}\r\n onSelect={onDateChange}\r\n fromYear={1960}\r\n toYear={2030}\r\n locale={uk}\r\n />\r\n </PopoverContent>\r\n </Popover>\r\n );\r\n }\r\n);\r\n\r\nDatePicker.displayName = 'DatePicker';\r\n\r\n"],"names":["DatePicker","React","props","ref","selectedDate","onDateChange","disabled","open","setOpen","jsxs","Popover","jsx","PopoverTrigger","Button","cn","format","uk","CalendarIcon","PopoverContent","Calendar"],"mappings":";;;;;;;;;AAYO,MAAMA,IAAaC,EAAM;AAAA,EAC9B,CAACC,GAAOC,MAAQ;AACd,UAAM;AAAA,MACJ,cAAAC;AAAA,MACA,cAAAC;AAAA,MACA,UAAAC,IAAW;AAAA,IAAA,IACTJ,GACE,CAACK,GAAMC,CAAO,IAAIP,EAAM,SAAS,EAAK;AAC5C,WACE,gBAAAQ,EAACC,GAAA,EAAQ,MAAAH,GAAY,cAAcC,GACjC,UAAA;AAAA,MAAA,gBAAAG,EAACC,GAAA,EAAe,SAAO,IACrB,UAAA,gBAAAH;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,KAAAV;AAAA,UACA,UAAAG;AAAA,UACA,SAAS;AAAA,UACT,WAAWQ;AAAA,YACT;AAAA,YACA,CAACV,KAAgB;AAAA,YACjB;AAAA,YACAG,KAAQ;AAAA,UAAA;AAAA,UAGT,UAAA;AAAA,YAAAH,IACCW,EAAOX,GAAc,aAAa,EAAE,QAAQY,GAAI,IAEhD,gBAAAL,EAAC,QAAA,EAAK,UAAA,aAAA,CAAU;AAAA,YAElB,gBAAAA,EAACM,GAAA,EAAa,WAAU,uBAAA,CAAuB;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA,GAEnD;AAAA,MACA,gBAAAN,EAACO,GAAA,EAAe,OAAM,SAAQ,WAAU,cACtC,UAAA,gBAAAP;AAAA,QAACQ;AAAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,eAAc;AAAA,UACd,UAAUf;AAAA,UACV,UAAUC;AAAA,UACV,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,QAAQW;AAAA,QAAA;AAAA,MAAA,EACV,CACF;AAAA,IAAA,GACF;AAAA,EAEJ;AACF;AAEAhB,EAAW,cAAc;"}