@verbb/plugin-kit-react 1.0.6 → 1.0.7
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/CHANGELOG.md +19 -0
- package/dist/components/Command.d.ts +5 -5
- package/dist/components/Command.d.ts.map +1 -1
- package/dist/components/DatePicker.d.ts.map +1 -1
- package/dist/components/DatePicker.js +17 -3
- package/dist/components/DatePicker.js.map +1 -1
- package/dist/components/Popover.d.ts.map +1 -1
- package/dist/components/Popover.js +2 -1
- package/dist/components/Popover.js.map +1 -1
- package/dist/components/Select.d.ts +1 -1
- package/dist/components/Select.d.ts.map +1 -1
- package/dist/components/Select.js +3 -1
- package/dist/components/Select.js.map +1 -1
- package/dist/components/TimePicker.d.ts.map +1 -1
- package/dist/components/TimePicker.js +1 -0
- package/dist/components/TimePicker.js.map +1 -1
- package/dist/forms/fields/DateTimeField.d.ts.map +1 -1
- package/dist/forms/fields/DateTimeField.js +13 -22
- package/dist/forms/fields/DateTimeField.js.map +1 -1
- package/dist/utils/datetime.d.ts +10 -0
- package/dist/utils/datetime.d.ts.map +1 -0
- package/dist/utils/datetime.js +60 -0
- package/dist/utils/datetime.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +7 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 1.0.7 - 2026-06-18
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Added datetime helpers (`parseDateTimeValue`, `parseLocalDate`, `formatDateTimeValue`, `resolveCalendarMonth`, and `startOfMonth`) for wall-clock `Y-m-d H:i:s` values without timezone conversion.
|
|
9
|
+
- Exported the datetime helpers from `@verbb/plugin-kit-react/utils`.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
- Changed `DatePicker` to parse values with `parseLocalDate`, keep the visible calendar month in sync with the selected date, and reopen on that month when the popover opens.
|
|
13
|
+
- Changed `DateTimeField` to read and write Craft-style wall-clock datetime strings through the form engine instead of maintaining mirrored local state or emitting ISO UTC values.
|
|
14
|
+
- Changed `PopoverContent` and `SelectContent` to default to `positionMethod="fixed"` when portaling into a Shadow DOM container.
|
|
15
|
+
- Changed `SelectContent` to accept an optional `positionMethod` prop.
|
|
16
|
+
- Changed `TimePicker` to use `alignItemWithTrigger={false}` so its dropdown stays aligned in scrollable embedded CP panes.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- Fixed `DatePicker` opening on the current month instead of the selected date’s month.
|
|
20
|
+
- Fixed `DateTimeField` shifting dates and times when values were formatted with `toISOString()`.
|
|
21
|
+
- Fixed `DateTimeField` causing a React maximum update depth error while saving forms.
|
|
22
|
+
- Fixed `TimePicker` and other select popovers rendering with a large positional offset inside Shadow DOM apps such as the Formie form builder.
|
|
23
|
+
|
|
5
24
|
## 1.0.6 - 2026-06-14
|
|
6
25
|
|
|
7
26
|
### Added
|
|
@@ -9,14 +9,14 @@ declare function CommandDialog({ title, description, children, showCloseButton,
|
|
|
9
9
|
}): import("react/jsx-runtime").JSX.Element;
|
|
10
10
|
declare function CommandInput({ className, ...props }: ComponentProps<typeof CommandPrimitive.Input>): import("react/jsx-runtime").JSX.Element;
|
|
11
11
|
declare const CommandList: React.ForwardRefExoticComponent<Omit<{
|
|
12
|
-
children?:
|
|
13
|
-
} & Pick<Pick<
|
|
14
|
-
ref?:
|
|
12
|
+
children?: import('react').ReactNode;
|
|
13
|
+
} & Pick<Pick<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof import('react').HTMLAttributes<HTMLDivElement>> & {
|
|
14
|
+
ref?: import('react').Ref<HTMLDivElement>;
|
|
15
15
|
} & {
|
|
16
16
|
asChild?: boolean;
|
|
17
|
-
}, "key" | keyof
|
|
17
|
+
}, "key" | "asChild" | keyof import('react').HTMLAttributes<HTMLDivElement>> & {
|
|
18
18
|
label?: string;
|
|
19
|
-
} &
|
|
19
|
+
} & import('react').RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
20
20
|
declare function CommandEmpty({ ...props }: ComponentProps<typeof CommandPrimitive.Empty>): import("react/jsx-runtime").JSX.Element;
|
|
21
21
|
declare function CommandGroup({ className, ...props }: ComponentProps<typeof CommandPrimitive.Group>): import("react/jsx-runtime").JSX.Element;
|
|
22
22
|
declare function CommandSeparator({ className, ...props }: ComponentProps<typeof CommandPrimitive.Separator>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../src/components/Command.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,cAAc,EAAkB,MAAM,OAAO,CAAC;AAG9D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAEpE,OAAO,EACH,MAAM,EACT,MAAM,oCAAoC,CAAC;AAI5C,iBAAS,OAAO,CAAC,EACb,SAAS,EACT,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,2CAkBzC;AAED,iBAAS,aAAa,CAAC,EACnB,KAAyB,EACzB,WAA8C,EAC9C,QAAQ,EACR,eAAsB,EACtB,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC5B,2CAyBA;AAED,iBAAS,YAAY,CAAC,EAClB,SAAS,EACT,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,2CAyB/C;AAED,QAAA,MAAM,WAAW;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../src/components/Command.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,cAAc,EAAkB,MAAM,OAAO,CAAC;AAG9D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAEpE,OAAO,EACH,MAAM,EACT,MAAM,oCAAoC,CAAC;AAI5C,iBAAS,OAAO,CAAC,EACb,SAAS,EACT,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,2CAkBzC;AAED,iBAAS,aAAa,CAAC,EACnB,KAAyB,EACzB,WAA8C,EAC9C,QAAQ,EACR,eAAsB,EACtB,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC5B,2CAyBA;AAED,iBAAS,YAAY,CAAC,EAClB,SAAS,EACT,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,2CAyB/C;AAED,QAAA,MAAM,WAAW;;;;;;;;gGAoBf,CAAC;AAEH,iBAAS,YAAY,CAAC,EAClB,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,2CAc/C;AAED,iBAAS,YAAY,CAAC,EAClB,SAAS,EACT,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,2CA4B/C;AAED,iBAAS,gBAAgB,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,2CAmBnD;AAED,iBAAS,WAAW,CAAC,EACjB,SAAS,EACT,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAmB9C;AAED,iBAAS,eAAe,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,MAAM,CAAC,2CAexB;AAED,OAAO,EACH,OAAO,EACP,aAAa,EACb,eAAe,EACf,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,GACnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../src/components/DatePicker.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../src/components/DatePicker.tsx"],"names":[],"mappings":"AAoBA,wBAAgB,UAAU,CAAC,EACvB,KAAK,EACL,aAAa,EACb,WAAgB,EAChB,SAAS,EACT,QAAgB,EAChB,SAAiB,EACjB,GAAG,KAAK,EACX,EAAE;IACC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,2CA6EA"}
|
|
@@ -1,25 +1,37 @@
|
|
|
1
1
|
import { cn } from "../utils/classes.js";
|
|
2
2
|
import { hostFormatDate } from "../utils/hostBridge.js";
|
|
3
|
+
import { parseLocalDate, resolveCalendarMonth } from "../utils/datetime.js";
|
|
3
4
|
import "../utils/index.js";
|
|
4
5
|
import { Calendar } from "./Calendar.js";
|
|
5
6
|
import { Popover, PopoverContent, PopoverTrigger } from "./Popover.js";
|
|
6
7
|
import "./index.js";
|
|
7
8
|
import { Button } from "./Button.js";
|
|
8
|
-
import { useState } from "react";
|
|
9
|
+
import { useEffect, useMemo, useState } from "react";
|
|
9
10
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
11
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
11
12
|
import { faCalendar } from "@fortawesome/pro-solid-svg-icons";
|
|
12
13
|
//#region src/components/DatePicker.tsx
|
|
14
|
+
var toDate = (value) => {
|
|
15
|
+
return parseLocalDate(value);
|
|
16
|
+
};
|
|
13
17
|
function DatePicker({ value, onValueChange, placeholder = "", className, disabled = false, isInvalid = false, ...props }) {
|
|
14
18
|
const [open, setOpen] = useState(false);
|
|
15
|
-
const date =
|
|
19
|
+
const date = useMemo(() => toDate(value), [value]);
|
|
20
|
+
const [month, setMonth] = useState(() => resolveCalendarMonth(date));
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (date) setMonth(resolveCalendarMonth(date));
|
|
23
|
+
}, [date]);
|
|
24
|
+
const handleOpenChange = (nextOpen) => {
|
|
25
|
+
if (nextOpen) setMonth(resolveCalendarMonth(date));
|
|
26
|
+
setOpen(nextOpen);
|
|
27
|
+
};
|
|
16
28
|
const handleSelect = (selectedDate) => {
|
|
17
29
|
onValueChange?.(selectedDate);
|
|
18
30
|
setOpen(false);
|
|
19
31
|
};
|
|
20
32
|
return /* @__PURE__ */ jsxs(Popover, {
|
|
21
33
|
open,
|
|
22
|
-
onOpenChange:
|
|
34
|
+
onOpenChange: handleOpenChange,
|
|
23
35
|
children: [/* @__PURE__ */ jsx(PopoverTrigger, { render: /* @__PURE__ */ jsxs(Button, {
|
|
24
36
|
variant: "outline",
|
|
25
37
|
className: cn("min-h-[2.125rem] h-[2.125rem]", "w-[130px] px-[10px] !py-0", "!cursor-default", "justify-start text-left font-normal", "bg-transparent border border-slate-400", "hover:bg-slate-50!", "active:bg-slate-150!", "data-[popup-open]:bg-slate-150!", "[&>svg]:size-[14px]", isInvalid && ["border-rose-600!", "focus-visible:shadow-[0_0_0_1px_var(--color-rose-600),0_0_4px_0_hsl(from_var(--color-rose-600)_h_s_l/0.7)]!"], className),
|
|
@@ -34,6 +46,8 @@ function DatePicker({ value, onValueChange, placeholder = "", className, disable
|
|
|
34
46
|
children: /* @__PURE__ */ jsx(Calendar, {
|
|
35
47
|
mode: "single",
|
|
36
48
|
selected: date,
|
|
49
|
+
month,
|
|
50
|
+
onMonthChange: setMonth,
|
|
37
51
|
captionLayout: "dropdown",
|
|
38
52
|
onSelect: handleSelect
|
|
39
53
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","names":[],"sources":["../../src/components/DatePicker.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCalendar } from '@fortawesome/pro-solid-svg-icons';\n\nimport {\n Button,\n Calendar,\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@verbb/plugin-kit-react/components';\n\nimport { cn, hostFormatDate } from '@verbb/plugin-kit-react/utils';\n\nexport function DatePicker({\n value,\n onValueChange,\n placeholder = '',\n className,\n disabled = false,\n isInvalid = false,\n ...props\n}: {\n value: Date | string | null;\n onValueChange?: (value: Date | undefined) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n isInvalid?: boolean;\n}) {\n const [open, setOpen] = useState(false);\n
|
|
1
|
+
{"version":3,"file":"DatePicker.js","names":[],"sources":["../../src/components/DatePicker.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCalendar } from '@fortawesome/pro-solid-svg-icons';\n\nimport {\n Button,\n Calendar,\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@verbb/plugin-kit-react/components';\n\nimport { cn, hostFormatDate } from '@verbb/plugin-kit-react/utils';\nimport { parseLocalDate, resolveCalendarMonth } from '@verbb/plugin-kit-react/utils/datetime';\n\nconst toDate = (value: Date | string | null | undefined): Date | undefined => {\n return parseLocalDate(value);\n};\n\nexport function DatePicker({\n value,\n onValueChange,\n placeholder = '',\n className,\n disabled = false,\n isInvalid = false,\n ...props\n}: {\n value: Date | string | null;\n onValueChange?: (value: Date | undefined) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n isInvalid?: boolean;\n}) {\n const [open, setOpen] = useState(false);\n const date = useMemo(() => toDate(value), [value]);\n const [month, setMonth] = useState(() => resolveCalendarMonth(date));\n\n useEffect(() => {\n if (date) {\n setMonth(resolveCalendarMonth(date));\n }\n }, [date]);\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (nextOpen) {\n setMonth(resolveCalendarMonth(date));\n }\n\n setOpen(nextOpen);\n };\n\n const handleSelect = (selectedDate?: Date) => {\n onValueChange?.(selectedDate);\n setOpen(false);\n };\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger\n render={\n <Button\n variant=\"outline\"\n className={cn(\n 'min-h-[2.125rem] h-[2.125rem]',\n 'w-[130px] px-[10px] !py-0',\n '!cursor-default',\n 'justify-start text-left font-normal',\n 'bg-transparent border border-slate-400',\n 'hover:bg-slate-50!',\n 'active:bg-slate-150!',\n 'data-[popup-open]:bg-slate-150!',\n '[&>svg]:size-[14px]',\n\n isInvalid && [\n 'border-rose-600!',\n 'focus-visible:shadow-[0_0_0_1px_var(--color-rose-600),0_0_4px_0_hsl(from_var(--color-rose-600)_h_s_l/0.7)]!',\n ],\n className,\n )}\n disabled={disabled}\n {...props}\n >\n <FontAwesomeIcon\n icon={faCalendar}\n className={cn(\n 'mr-1 text-gray-400',\n )}\n />\n {date ? hostFormatDate(date) : placeholder}\n </Button>\n } />\n\n <PopoverContent\n className={cn(\n // Popover width and padding\n 'w-auto p-0!',\n )}\n >\n <Calendar\n mode=\"single\"\n selected={date}\n month={month}\n onMonthChange={setMonth}\n captionLayout=\"dropdown\"\n onSelect={handleSelect}\n />\n </PopoverContent>\n </Popover >\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAgBA,IAAM,UAAU,UAA8D;AAC1E,QAAO,eAAe,MAAM;;AAGhC,SAAgB,WAAW,EACvB,OACA,eACA,cAAc,IACd,WACA,WAAW,OACX,YAAY,OACZ,GAAG,SAQJ;CACC,MAAM,CAAC,MAAM,WAAW,SAAS,MAAM;CACvC,MAAM,OAAO,cAAc,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC;CAClD,MAAM,CAAC,OAAO,YAAY,eAAe,qBAAqB,KAAK,CAAC;AAEpE,iBAAgB;AACZ,MAAI,KACA,UAAS,qBAAqB,KAAK,CAAC;IAEzC,CAAC,KAAK,CAAC;CAEV,MAAM,oBAAoB,aAAsB;AAC5C,MAAI,SACA,UAAS,qBAAqB,KAAK,CAAC;AAGxC,UAAQ,SAAS;;CAGrB,MAAM,gBAAgB,iBAAwB;AAC1C,kBAAgB,aAAa;AAC7B,UAAQ,MAAM;;AAGlB,QACI,qBAAC,SAAD;EAAe;EAAM,cAAc;YAAnC,CACI,oBAAC,gBAAD,EACI,QACI,qBAAC,QAAD;GACI,SAAQ;GACR,WAAW,GACP,iCACA,6BACA,mBACA,uCACA,0CACA,sBACA,wBACA,mCACA,uBAEA,aAAa,CACT,oBACA,8GACH,EACD,UACH;GACS;GACV,GAAI;aApBR,CAsBI,oBAAC,iBAAD;IACI,MAAM;IACN,WAAW,GACP,qBACH;IACH,CAAA,EACD,OAAO,eAAe,KAAK,GAAG,YAC1B;MACT,CAAA,EAER,oBAAC,gBAAD;GACI,WAAW,GAEP,cACH;aAED,oBAAC,UAAD;IACI,MAAK;IACL,UAAU;IACH;IACP,eAAe;IACf,eAAc;IACd,UAAU;IACZ,CAAA;GACW,CAAA,CACV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../src/components/Popover.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAIrE,iBAAS,OAAO,CAAC,EAAE,SAAqB,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,2CAEhF;AAED,iBAAS,cAAc,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,2CAEnE;AAED,iBAAS,cAAc,CAAC,EACpB,SAAS,EACT,KAAgB,EAChB,WAAe,EACf,IAAe,EACf,UAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,MAAM,EACN,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,GAAG,KAAK,EACX,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAC3B,IAAI,CACA,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAC/B,OAAO,GACP,aAAa,GACb,MAAM,GACN,YAAY,GACZ,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,QAAQ,GACR,oBAAoB,CACzB,GAAG;IACA,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI,CAAA;CACpD,
|
|
1
|
+
{"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../src/components/Popover.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAIrE,iBAAS,OAAO,CAAC,EAAE,SAAqB,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,2CAEhF;AAED,iBAAS,cAAc,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,2CAEnE;AAED,iBAAS,cAAc,CAAC,EACpB,SAAS,EACT,KAAgB,EAChB,WAAe,EACf,IAAe,EACf,UAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,MAAM,EACN,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,GAAG,KAAK,EACX,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAC3B,IAAI,CACA,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAC/B,OAAO,GACP,aAAa,GACb,MAAM,GACN,YAAY,GACZ,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,QAAQ,GACR,oBAAoB,CACzB,GAAG;IACA,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI,CAAA;CACpD,2CAuDJ;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAY1E;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,2CAY1E;AAED,iBAAS,kBAAkB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACX,EAAE,gBAAgB,CAAC,WAAW,CAAC,KAAK,2CAYpC;AAGD,OAAO,EACH,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,cAAc,GACjB,CAAC"}
|
|
@@ -20,6 +20,7 @@ function PopoverTrigger({ ...props }) {
|
|
|
20
20
|
function PopoverContent({ className, align = "center", alignOffset = 0, side = "bottom", sideOffset = 4, positionMethod, collisionBoundary, collisionPadding, sticky, collisionAvoidance, portalClassName, portalContainer, ...props }) {
|
|
21
21
|
const resolvedPortalClassName = getPortalClassName(portalClassName);
|
|
22
22
|
const resolvedPortalContainer = getPortalContainer(portalContainer);
|
|
23
|
+
const resolvedPositionMethod = positionMethod ?? (resolvedPortalContainer instanceof ShadowRoot ? "fixed" : void 0);
|
|
23
24
|
return /* @__PURE__ */ jsx(Popover$1.Portal, {
|
|
24
25
|
"data-slot": "popover-portal",
|
|
25
26
|
className: resolvedPortalClassName,
|
|
@@ -29,7 +30,7 @@ function PopoverContent({ className, align = "center", alignOffset = 0, side = "
|
|
|
29
30
|
alignOffset,
|
|
30
31
|
side,
|
|
31
32
|
sideOffset,
|
|
32
|
-
positionMethod,
|
|
33
|
+
positionMethod: resolvedPositionMethod,
|
|
33
34
|
collisionBoundary,
|
|
34
35
|
collisionPadding,
|
|
35
36
|
sticky,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popover.js","names":[],"sources":["../../src/components/Popover.tsx"],"sourcesContent":["import { Popover as PopoverPrimitive } from '@base-ui/react/popover';\n\nimport { cn, getPortalClassName, getPortalContainer } from '@verbb/plugin-kit-react/utils';\n\nfunction Popover({ ariaLabel = 'Popover', ...props }: PopoverPrimitive.Root.Props) {\n return <PopoverPrimitive.Root data-slot=\"popover\" ariaLabel={ariaLabel} {...props} />;\n}\n\nfunction PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n alignOffset = 0,\n side = 'bottom',\n sideOffset = 4,\n positionMethod,\n collisionBoundary,\n collisionPadding,\n sticky,\n collisionAvoidance,\n portalClassName,\n portalContainer,\n ...props\n}: PopoverPrimitive.Popup.Props &\n Pick<\n PopoverPrimitive.Positioner.Props,\n | 'align'\n | 'alignOffset'\n | 'side'\n | 'sideOffset'\n | 'positionMethod'\n | 'collisionBoundary'\n | 'collisionPadding'\n | 'sticky'\n | 'collisionAvoidance'\n > & {\n portalClassName?: string\n portalContainer?: HTMLElement | ShadowRoot | null\n }) {\n const resolvedPortalClassName = getPortalClassName(portalClassName);\n const resolvedPortalContainer = getPortalContainer(portalContainer);\n\n return (\n <PopoverPrimitive.Portal\n data-slot=\"popover-portal\"\n className={resolvedPortalClassName}\n container={resolvedPortalContainer}\n >\n <PopoverPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n positionMethod={
|
|
1
|
+
{"version":3,"file":"Popover.js","names":[],"sources":["../../src/components/Popover.tsx"],"sourcesContent":["import { Popover as PopoverPrimitive } from '@base-ui/react/popover';\n\nimport { cn, getPortalClassName, getPortalContainer } from '@verbb/plugin-kit-react/utils';\n\nfunction Popover({ ariaLabel = 'Popover', ...props }: PopoverPrimitive.Root.Props) {\n return <PopoverPrimitive.Root data-slot=\"popover\" ariaLabel={ariaLabel} {...props} />;\n}\n\nfunction PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n alignOffset = 0,\n side = 'bottom',\n sideOffset = 4,\n positionMethod,\n collisionBoundary,\n collisionPadding,\n sticky,\n collisionAvoidance,\n portalClassName,\n portalContainer,\n ...props\n}: PopoverPrimitive.Popup.Props &\n Pick<\n PopoverPrimitive.Positioner.Props,\n | 'align'\n | 'alignOffset'\n | 'side'\n | 'sideOffset'\n | 'positionMethod'\n | 'collisionBoundary'\n | 'collisionPadding'\n | 'sticky'\n | 'collisionAvoidance'\n > & {\n portalClassName?: string\n portalContainer?: HTMLElement | ShadowRoot | null\n }) {\n const resolvedPortalClassName = getPortalClassName(portalClassName);\n const resolvedPortalContainer = getPortalContainer(portalContainer);\n const resolvedPositionMethod = positionMethod ?? (\n resolvedPortalContainer instanceof ShadowRoot ? 'fixed' : undefined\n );\n\n return (\n <PopoverPrimitive.Portal\n data-slot=\"popover-portal\"\n className={resolvedPortalClassName}\n container={resolvedPortalContainer}\n >\n <PopoverPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n positionMethod={resolvedPositionMethod}\n collisionBoundary={collisionBoundary}\n collisionPadding={collisionPadding}\n sticky={sticky}\n collisionAvoidance={collisionAvoidance}\n className=\"isolate z-50\"\n >\n <PopoverPrimitive.Popup\n data-slot=\"popover-content\"\n className={cn(\n // Reset and base styles\n 'z-50 w-72 rounded-md outline-hidden will-change-[transform,opacity]',\n\n // Themed styles (backgrounds, colors, shadows, spacing)\n 'bg-white p-4',\n 'shadow-[0_10px_38px_-10px_hsla(206,22%,7%,.35),0_10px_20px_-15px_hsla(206,22%,7%,.2)]',\n 'focus:shadow-[0_10px_38px_-10px_hsla(206,22%,7%,.35),0_10px_20px_-15px_hsla(206,22%,7%,.2)]',\n\n // Animation classes for open/closed states\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n\n // Animation classes for side-based slide-ins\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n\n // Additional custom classes passed in as props\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn(\n 'flex flex-col gap-0.5 text-sm',\n\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {\n return (\n <PopoverPrimitive.Title\n data-slot=\"popover-title\"\n className={cn(\n 'font-medium text-sm',\n\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction PopoverDescription({\n className,\n ...props\n}: PopoverPrimitive.Description.Props) {\n return (\n <PopoverPrimitive.Description\n data-slot=\"popover-description\"\n className={cn(\n 'text-gray-500',\n\n className,\n )}\n {...props}\n />\n );\n}\n\n\nexport {\n Popover,\n PopoverContent,\n PopoverDescription,\n PopoverHeader,\n PopoverTitle,\n PopoverTrigger,\n};\n"],"mappings":";;;;;;AAIA,SAAS,QAAQ,EAAE,YAAY,WAAW,GAAG,SAAsC;AAC/E,QAAO,oBAAC,UAAiB,MAAlB;EAAuB,aAAU;EAAqB;EAAW,GAAI;EAAS,CAAA;;AAGzF,SAAS,eAAe,EAAE,GAAG,SAAyC;AAClE,QAAO,oBAAC,UAAiB,SAAlB;EAA0B,aAAU;EAAkB,GAAI;EAAS,CAAA;;AAG9E,SAAS,eAAe,EACpB,WACA,QAAQ,UACR,cAAc,GACd,OAAO,UACP,aAAa,GACb,gBACA,mBACA,kBACA,QACA,oBACA,iBACA,iBACA,GAAG,SAgBA;CACH,MAAM,0BAA0B,mBAAmB,gBAAgB;CACnE,MAAM,0BAA0B,mBAAmB,gBAAgB;CACnE,MAAM,yBAAyB,mBAC3B,mCAAmC,aAAa,UAAU,KAAA;AAG9D,QACI,oBAAC,UAAiB,QAAlB;EACI,aAAU;EACV,WAAW;EACX,WAAW;YAEX,oBAAC,UAAiB,YAAlB;GACW;GACM;GACP;GACM;GACZ,gBAAgB;GACG;GACD;GACV;GACY;GACpB,WAAU;aAEV,oBAAC,UAAiB,OAAlB;IACI,aAAU;IACV,WAAW,GAEP,uEAGA,gBACA,yFACA,+FAGA,gEACA,8DACA,gEAGA,0CACA,0CACA,0CACA,0CAGA,UACH;IACD,GAAI;IACN,CAAA;GACwB,CAAA;EACR,CAAA;;AAIlC,SAAS,cAAc,EAAE,WAAW,GAAG,SAAsC;AACzE,QACI,oBAAC,OAAD;EACI,aAAU;EACV,WAAW,GACP,iCAEA,UACH;EACD,GAAI;EACN,CAAA;;AAIV,SAAS,aAAa,EAAE,WAAW,GAAG,SAAuC;AACzE,QACI,oBAAC,UAAiB,OAAlB;EACI,aAAU;EACV,WAAW,GACP,uBAEA,UACH;EACD,GAAI;EACN,CAAA;;AAIV,SAAS,mBAAmB,EACxB,WACA,GAAG,SACgC;AACnC,QACI,oBAAC,UAAiB,aAAlB;EACI,aAAU;EACV,WAAW,GACP,iBAEA,UACH;EACD,GAAI;EACN,CAAA"}
|
|
@@ -13,7 +13,7 @@ declare function SelectValue({ className, ...props }: SelectPrimitive.Value.Prop
|
|
|
13
13
|
declare function SelectTrigger({ className, size, children, ...props }: SelectPrimitive.Trigger.Props & {
|
|
14
14
|
size?: SelectSize;
|
|
15
15
|
}): import("react/jsx-runtime").JSX.Element;
|
|
16
|
-
declare function SelectContent({ className, children, side, sideOffset, align, alignOffset, alignItemWithTrigger, ...props }: SelectPrimitive.Popup.Props & Pick<SelectPrimitive.Positioner.Props, 'align' | 'alignOffset' | 'side' | 'sideOffset' | 'alignItemWithTrigger'>): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
declare function SelectContent({ className, children, side, sideOffset, align, alignOffset, alignItemWithTrigger, positionMethod, ...props }: SelectPrimitive.Popup.Props & Pick<SelectPrimitive.Positioner.Props, 'align' | 'alignOffset' | 'side' | 'sideOffset' | 'alignItemWithTrigger' | 'positionMethod'>): import("react/jsx-runtime").JSX.Element;
|
|
17
17
|
declare function SelectLabel({ className, ...props }: SelectPrimitive.GroupLabel.Props): import("react/jsx-runtime").JSX.Element;
|
|
18
18
|
declare function SelectItem({ className, children, ...props }: SelectPrimitive.Item.Props): import("react/jsx-runtime").JSX.Element;
|
|
19
19
|
declare function SelectSeparator({ className, ...props }: SelectPrimitive.Separator.Props): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../src/components/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA6B,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAOlE,QAAA,MAAM,qBAAqB;;8EAazB,CAAC;AAsFH,KAAK,UAAU,GAAG,YAAY,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAIrE,iBAAS,MAAM,CAAC,EACZ,IAAgB,EAChB,QAAQ,EACR,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,UAAU,CAAA;CAAE,2CAQrE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,2CAUxE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,2CAaxE;AAED,iBAAS,aAAa,CAAC,EACnB,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EACX,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,GAAG;IAC/B,IAAI,CAAC,EAAE,UAAU,CAAC;CACrB,2CA0DA;AAGD,iBAAS,aAAa,CAAC,EACnB,SAAS,EACT,QAAQ,EACR,IAAe,EACf,UAAc,EACd,KAAgB,EAChB,WAAe,EACf,oBAA2B,EAC3B,GAAG,KAAK,EACX,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,GAC1B,IAAI,CACA,eAAe,CAAC,UAAU,CAAC,KAAK,EAChC,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,sBAAsB,
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../src/components/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA6B,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAOlE,QAAA,MAAM,qBAAqB;;8EAazB,CAAC;AAsFH,KAAK,UAAU,GAAG,YAAY,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAIrE,iBAAS,MAAM,CAAC,EACZ,IAAgB,EAChB,QAAQ,EACR,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,UAAU,CAAA;CAAE,2CAQrE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,2CAUxE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,2CAaxE;AAED,iBAAS,aAAa,CAAC,EACnB,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EACX,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,GAAG;IAC/B,IAAI,CAAC,EAAE,UAAU,CAAC;CACrB,2CA0DA;AAGD,iBAAS,aAAa,CAAC,EACnB,SAAS,EACT,QAAQ,EACR,IAAe,EACf,UAAc,EACd,KAAgB,EAChB,WAAe,EACf,oBAA2B,EAC3B,cAAc,EACd,GAAG,KAAK,EACX,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,GAC1B,IAAI,CACA,eAAe,CAAC,UAAU,CAAC,KAAK,EAChC,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,sBAAsB,GAAG,gBAAgB,CAC9F,2CA0DJ;AAED,iBAAS,WAAW,CAAC,EACjB,SAAS,EACT,GAAG,KAAK,EACX,EAAE,eAAe,CAAC,UAAU,CAAC,KAAK,2CAkBlC;AAED,iBAAS,UAAU,CAAC,EAChB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACX,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,2CAqD5B;AAED,iBAAS,eAAe,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACX,EAAE,eAAe,CAAC,SAAS,CAAC,KAAK,2CAmBjC;AAED,iBAAS,oBAAoB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,OAAO,eAAe,CAAC,aAAa,CAAC,2CAsBtD;AAED,iBAAS,sBAAsB,CAAC,EAC5B,SAAS,EACT,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,OAAO,eAAe,CAAC,eAAe,CAAC,2CAsBxD;AAGD,OAAO,EACH,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,GACd,CAAC"}
|
|
@@ -117,9 +117,10 @@ function SelectTrigger({ className, size, children, ...props }) {
|
|
|
117
117
|
}) })]
|
|
118
118
|
});
|
|
119
119
|
}
|
|
120
|
-
function SelectContent({ className, children, side = "bottom", sideOffset = 4, align = "center", alignOffset = 0, alignItemWithTrigger = true, ...props }) {
|
|
120
|
+
function SelectContent({ className, children, side = "bottom", sideOffset = 4, align = "center", alignOffset = 0, alignItemWithTrigger = true, positionMethod, ...props }) {
|
|
121
121
|
const resolvedPortalClassName = getPortalClassName();
|
|
122
122
|
const resolvedPortalContainer = getPortalContainer();
|
|
123
|
+
const resolvedPositionMethod = positionMethod ?? (resolvedPortalContainer instanceof ShadowRoot ? "fixed" : void 0);
|
|
123
124
|
return /* @__PURE__ */ jsx(Select$1.Portal, {
|
|
124
125
|
className: resolvedPortalClassName,
|
|
125
126
|
container: resolvedPortalContainer,
|
|
@@ -129,6 +130,7 @@ function SelectContent({ className, children, side = "bottom", sideOffset = 4, a
|
|
|
129
130
|
align,
|
|
130
131
|
alignOffset,
|
|
131
132
|
alignItemWithTrigger,
|
|
133
|
+
positionMethod: resolvedPositionMethod,
|
|
132
134
|
className: "isolate z-50",
|
|
133
135
|
children: /* @__PURE__ */ jsxs(Select$1.Popup, {
|
|
134
136
|
"data-slot": "select-content",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","names":[],"sources":["../../src/components/Select.tsx"],"sourcesContent":["import { ComponentProps, createContext, useContext } from 'react';\nimport { Select as SelectPrimitive } from '@base-ui/react/select';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCheck, faChevronDown, faChevronUp } from '@fortawesome/pro-solid-svg-icons';\n\nimport { cn, getPortalClassName, getPortalContainer } from '@verbb/plugin-kit-react/utils';\n\nconst selectTriggerVariants = cva('', {\n variants: {\n size: {\n xs: 'px-2 py-1 text-[11px] rounded-sm [&_svg:not([class*=\"size-\"])]:size-3',\n sm: 'px-2.5 py-1.5 text-[12px] rounded-md [&_svg:not([class*=\"size-\"])]:size-3',\n default: 'px-[10px] py-[6px] text-[14px] rounded-lg [&_svg:not([class*=\"size-\"])]:size-3',\n lg: 'px-3 py-2 text-sm rounded-lg [&_svg:not([class*=\"size-\"])]:size-3',\n xl: 'px-3.5 py-2.5 text-sm rounded-lg [&_svg:not([class*=\"size-\"])]:size-3',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\nconst selectTriggerIconVariants = cva('', {\n variants: {\n size: {\n xs: 'size-[10px]',\n sm: 'size-[11px]',\n default: 'size-3',\n lg: 'size-3',\n xl: 'size-3.5',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\nconst selectItemIndicatorVariants = cva('', {\n variants: {\n size: {\n xs: 'right-2 size-3',\n sm: 'right-2.5 size-3',\n default: 'right-2 size-3',\n lg: 'right-3 size-3',\n xl: 'right-3.5 size-3',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\nconst selectItemIndicatorIconVariants = cva('', {\n variants: {\n size: {\n xs: 'size-3',\n sm: 'size-3',\n default: 'size-3',\n lg: 'size-3',\n xl: 'size-3',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\nconst selectLabelVariants = cva([\n // Theme\n 'text-slate-700',\n], {\n variants: {\n size: {\n xs: 'px-2 pt-1 text-[11px]',\n sm: 'px-2.5 pt-1 text-[12px]',\n default: 'px-2.5 pt-1 text-xs',\n lg: 'px-3 pt-1 text-sm',\n xl: 'px-3.5 pt-1 text-base',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\nconst selectItemVariants = cva('', {\n variants: {\n size: {\n xs: 'px-2 py-1 pr-7 text-[11px] [&_svg:not([class*=\"size-\"])]:size-3',\n sm: 'px-2.5 py-1.5 pr-7 text-[12px] [&_svg:not([class*=\"size-\"])]:size-3',\n default: 'px-[10px] py-[6px] pr-8 text-[14px] [&_svg:not([class*=\"size-\"])]:size-3',\n lg: 'px-3 py-2 pr-8 text-sm [&_svg:not([class*=\"size-\"])]:size-3',\n xl: 'px-3.5 py-2.5 pr-9 text-sm [&_svg:not([class*=\"size-\"])]:size-3',\n\n\n },\n variant: {\n default: '',\n destructive: 'text-error',\n },\n },\n defaultVariants: {\n size: 'default',\n variant: 'default',\n },\n});\n\ntype SelectSize = VariantProps<typeof selectTriggerVariants>['size'];\n\nconst SelectContext = createContext<{ size: SelectSize }>({ size: 'default' });\n\nfunction Select({\n size = 'default',\n children,\n ...props\n}: ComponentProps<typeof SelectPrimitive.Root> & { size?: SelectSize }) {\n return (\n <SelectContext.Provider value={{ size }}>\n <SelectPrimitive.Root data-slot=\"select\" data-size={size} {...props}>\n {children}\n </SelectPrimitive.Root>\n </SelectContext.Provider>\n );\n}\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\n // Layout\n 'min-w-0 flex-1 basis-0 overflow-hidden text-left truncate',\n\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SelectTrigger({\n className,\n size,\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: SelectSize;\n}) {\n const context = useContext(SelectContext);\n const finalSize = size || context.size || 'default';\n\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={finalSize}\n className={cn(\n // Reset\n 'flex w-fit items-center justify-between whitespace-nowrap outline-none select-none transition-none',\n\n // Layout\n 'gap-3',\n\n // Theme\n 'bg-slate-250',\n 'border border-transparent',\n\n // Hover\n 'hover:not-disabled:bg-slate-300',\n\n // Value\n '*:data-[slot=select-value]:flex',\n '*:data-[slot=select-value]:items-center',\n '*:data-[slot=select-value]:gap-1.5',\n '*:data-[slot=select-value]:line-clamp-1',\n\n // Focus\n 'focus-visible:border-sky-600 focus-visible:shadow-[0_0_0_1px_var(--color-sky-600),0_0_4px_0_hsl(from_var(--color-sky-600)_h_s_l/0.7)]',\n 'aria-invalid:border-rose-600! aria-invalid:focus-visible:shadow-[0_0_0_1px_var(--color-rose-600),0_0_4px_0_hsl(from_var(--color-rose-600)_h_s_l/0.7)]!',\n\n // Disabled\n 'disabled:cursor-not-allowed disabled:opacity-50',\n\n // Icons\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n\n selectTriggerVariants({ size: finalSize }),\n\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <FontAwesomeIcon\n icon={faChevronDown}\n className={cn(\n 'pointer-events-none',\n selectTriggerIconVariants({ size: finalSize }),\n )}\n />\n }\n />\n </SelectPrimitive.Trigger>\n );\n}\n\n/* eslint-disable no-use-before-define */\nfunction SelectContent({\n className,\n children,\n side = 'bottom',\n sideOffset = 4,\n align = 'center',\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n 'align' | 'alignOffset' | 'side' | 'sideOffset' | 'alignItemWithTrigger'\n >) {\n const resolvedPortalClassName = getPortalClassName();\n const resolvedPortalContainer = getPortalContainer();\n\n return (\n <SelectPrimitive.Portal className={resolvedPortalClassName} container={resolvedPortalContainer}>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n data-align-trigger={alignItemWithTrigger}\n className={cn(\n // Reset\n 'relative isolate z-50 overflow-x-hidden overflow-y-auto',\n\n // Layout\n 'min-w-(--anchor-width)',\n 'max-w-[min(36rem,calc(100vw-2rem))]',\n\n // Theme\n 'rounded-md bg-white',\n 'shadow-[0_0_0_1px_rgba(31,41,51,0.1),0_5px_20px_rgba(31,41,51,0.25)]',\n\n // Animation\n 'duration-100',\n 'data-open:animate-in data-closed:animate-out',\n 'data-open:fade-in-0 data-closed:fade-out-0',\n 'data-open:zoom-in-95 data-closed:zoom-out-95',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n 'data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2',\n 'data-[side=inline-start]:slide-in-from-right-2',\n 'data-[side=inline-end]:slide-in-from-left-2',\n 'data-[align-trigger=true]:animate-none',\n 'origin-(--transform-origin)',\n\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n const { size } = useContext(SelectContext);\n\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\n // Theme\n 'text-slate-700',\n\n // Size\n selectLabelVariants({ size }),\n\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n const { size } = useContext(SelectContext);\n\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n // Reset\n 'relative flex w-full cursor-default items-center outline-hidden select-none',\n\n // Layout\n 'gap-1.5',\n '*:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2',\n\n // Focus\n 'focus:bg-slate-100 data-[highlighted]:bg-slate-100',\n\n // Disabled\n 'data-disabled:pointer-events-none data-disabled:opacity-50',\n\n // Icons\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n\n selectItemVariants({ size }),\n\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex min-w-0 items-center flex-1 gap-2 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={\n <span\n className={cn(\n 'pointer-events-none absolute flex items-center justify-center',\n\n selectItemIndicatorVariants({ size }),\n )}\n >\n <FontAwesomeIcon\n icon={faCheck}\n className={cn(\n 'pointer-events-none',\n selectItemIndicatorIconVariants({ size }),\n )}\n />\n </span>\n }\n />\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\n // Reset\n 'pointer-events-none',\n\n // Layout\n '-mx-1 my-1 h-px',\n\n // Theme\n 'bg-slate-200',\n\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\n // Layout\n 'top-0 w-full flex items-center justify-center',\n 'cursor-default',\n\n // Theme\n 'bg-white py-1',\n\n // Icons\n \"[&_svg:not([class*='size-'])]:size-3\",\n\n className,\n )}\n {...props}\n >\n <FontAwesomeIcon icon={faChevronUp} className=\"size-3 pointer-events-none\" />\n </SelectPrimitive.ScrollUpArrow>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\n // Layout\n 'bottom-0 w-full flex items-center justify-center',\n 'cursor-default',\n\n // Theme\n 'bg-white py-1',\n\n // Icons\n \"[&_svg:not([class*='size-'])]:size-3\",\n\n className,\n )}\n {...props}\n >\n <FontAwesomeIcon icon={faChevronDown} className=\"size-3 pointer-events-none\" />\n </SelectPrimitive.ScrollDownArrow>\n );\n}\n/* eslint-enable no-use-before-define */\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Select.js","names":[],"sources":["../../src/components/Select.tsx"],"sourcesContent":["import { ComponentProps, createContext, useContext } from 'react';\nimport { Select as SelectPrimitive } from '@base-ui/react/select';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCheck, faChevronDown, faChevronUp } from '@fortawesome/pro-solid-svg-icons';\n\nimport { cn, getPortalClassName, getPortalContainer } from '@verbb/plugin-kit-react/utils';\n\nconst selectTriggerVariants = cva('', {\n variants: {\n size: {\n xs: 'px-2 py-1 text-[11px] rounded-sm [&_svg:not([class*=\"size-\"])]:size-3',\n sm: 'px-2.5 py-1.5 text-[12px] rounded-md [&_svg:not([class*=\"size-\"])]:size-3',\n default: 'px-[10px] py-[6px] text-[14px] rounded-lg [&_svg:not([class*=\"size-\"])]:size-3',\n lg: 'px-3 py-2 text-sm rounded-lg [&_svg:not([class*=\"size-\"])]:size-3',\n xl: 'px-3.5 py-2.5 text-sm rounded-lg [&_svg:not([class*=\"size-\"])]:size-3',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\nconst selectTriggerIconVariants = cva('', {\n variants: {\n size: {\n xs: 'size-[10px]',\n sm: 'size-[11px]',\n default: 'size-3',\n lg: 'size-3',\n xl: 'size-3.5',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\nconst selectItemIndicatorVariants = cva('', {\n variants: {\n size: {\n xs: 'right-2 size-3',\n sm: 'right-2.5 size-3',\n default: 'right-2 size-3',\n lg: 'right-3 size-3',\n xl: 'right-3.5 size-3',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\nconst selectItemIndicatorIconVariants = cva('', {\n variants: {\n size: {\n xs: 'size-3',\n sm: 'size-3',\n default: 'size-3',\n lg: 'size-3',\n xl: 'size-3',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\nconst selectLabelVariants = cva([\n // Theme\n 'text-slate-700',\n], {\n variants: {\n size: {\n xs: 'px-2 pt-1 text-[11px]',\n sm: 'px-2.5 pt-1 text-[12px]',\n default: 'px-2.5 pt-1 text-xs',\n lg: 'px-3 pt-1 text-sm',\n xl: 'px-3.5 pt-1 text-base',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\nconst selectItemVariants = cva('', {\n variants: {\n size: {\n xs: 'px-2 py-1 pr-7 text-[11px] [&_svg:not([class*=\"size-\"])]:size-3',\n sm: 'px-2.5 py-1.5 pr-7 text-[12px] [&_svg:not([class*=\"size-\"])]:size-3',\n default: 'px-[10px] py-[6px] pr-8 text-[14px] [&_svg:not([class*=\"size-\"])]:size-3',\n lg: 'px-3 py-2 pr-8 text-sm [&_svg:not([class*=\"size-\"])]:size-3',\n xl: 'px-3.5 py-2.5 pr-9 text-sm [&_svg:not([class*=\"size-\"])]:size-3',\n\n\n },\n variant: {\n default: '',\n destructive: 'text-error',\n },\n },\n defaultVariants: {\n size: 'default',\n variant: 'default',\n },\n});\n\ntype SelectSize = VariantProps<typeof selectTriggerVariants>['size'];\n\nconst SelectContext = createContext<{ size: SelectSize }>({ size: 'default' });\n\nfunction Select({\n size = 'default',\n children,\n ...props\n}: ComponentProps<typeof SelectPrimitive.Root> & { size?: SelectSize }) {\n return (\n <SelectContext.Provider value={{ size }}>\n <SelectPrimitive.Root data-slot=\"select\" data-size={size} {...props}>\n {children}\n </SelectPrimitive.Root>\n </SelectContext.Provider>\n );\n}\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\n // Layout\n 'min-w-0 flex-1 basis-0 overflow-hidden text-left truncate',\n\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SelectTrigger({\n className,\n size,\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: SelectSize;\n}) {\n const context = useContext(SelectContext);\n const finalSize = size || context.size || 'default';\n\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={finalSize}\n className={cn(\n // Reset\n 'flex w-fit items-center justify-between whitespace-nowrap outline-none select-none transition-none',\n\n // Layout\n 'gap-3',\n\n // Theme\n 'bg-slate-250',\n 'border border-transparent',\n\n // Hover\n 'hover:not-disabled:bg-slate-300',\n\n // Value\n '*:data-[slot=select-value]:flex',\n '*:data-[slot=select-value]:items-center',\n '*:data-[slot=select-value]:gap-1.5',\n '*:data-[slot=select-value]:line-clamp-1',\n\n // Focus\n 'focus-visible:border-sky-600 focus-visible:shadow-[0_0_0_1px_var(--color-sky-600),0_0_4px_0_hsl(from_var(--color-sky-600)_h_s_l/0.7)]',\n 'aria-invalid:border-rose-600! aria-invalid:focus-visible:shadow-[0_0_0_1px_var(--color-rose-600),0_0_4px_0_hsl(from_var(--color-rose-600)_h_s_l/0.7)]!',\n\n // Disabled\n 'disabled:cursor-not-allowed disabled:opacity-50',\n\n // Icons\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n\n selectTriggerVariants({ size: finalSize }),\n\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <FontAwesomeIcon\n icon={faChevronDown}\n className={cn(\n 'pointer-events-none',\n selectTriggerIconVariants({ size: finalSize }),\n )}\n />\n }\n />\n </SelectPrimitive.Trigger>\n );\n}\n\n/* eslint-disable no-use-before-define */\nfunction SelectContent({\n className,\n children,\n side = 'bottom',\n sideOffset = 4,\n align = 'center',\n alignOffset = 0,\n alignItemWithTrigger = true,\n positionMethod,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n 'align' | 'alignOffset' | 'side' | 'sideOffset' | 'alignItemWithTrigger' | 'positionMethod'\n >) {\n const resolvedPortalClassName = getPortalClassName();\n const resolvedPortalContainer = getPortalContainer();\n const resolvedPositionMethod = positionMethod ?? (\n resolvedPortalContainer instanceof ShadowRoot ? 'fixed' : undefined\n );\n\n return (\n <SelectPrimitive.Portal className={resolvedPortalClassName} container={resolvedPortalContainer}>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n positionMethod={resolvedPositionMethod}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n data-align-trigger={alignItemWithTrigger}\n className={cn(\n // Reset\n 'relative isolate z-50 overflow-x-hidden overflow-y-auto',\n\n // Layout\n 'min-w-(--anchor-width)',\n 'max-w-[min(36rem,calc(100vw-2rem))]',\n\n // Theme\n 'rounded-md bg-white',\n 'shadow-[0_0_0_1px_rgba(31,41,51,0.1),0_5px_20px_rgba(31,41,51,0.25)]',\n\n // Animation\n 'duration-100',\n 'data-open:animate-in data-closed:animate-out',\n 'data-open:fade-in-0 data-closed:fade-out-0',\n 'data-open:zoom-in-95 data-closed:zoom-out-95',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n 'data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2',\n 'data-[side=inline-start]:slide-in-from-right-2',\n 'data-[side=inline-end]:slide-in-from-left-2',\n 'data-[align-trigger=true]:animate-none',\n 'origin-(--transform-origin)',\n\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n const { size } = useContext(SelectContext);\n\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\n // Theme\n 'text-slate-700',\n\n // Size\n selectLabelVariants({ size }),\n\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n const { size } = useContext(SelectContext);\n\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n // Reset\n 'relative flex w-full cursor-default items-center outline-hidden select-none',\n\n // Layout\n 'gap-1.5',\n '*:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2',\n\n // Focus\n 'focus:bg-slate-100 data-[highlighted]:bg-slate-100',\n\n // Disabled\n 'data-disabled:pointer-events-none data-disabled:opacity-50',\n\n // Icons\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n\n selectItemVariants({ size }),\n\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex min-w-0 items-center flex-1 gap-2 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={\n <span\n className={cn(\n 'pointer-events-none absolute flex items-center justify-center',\n\n selectItemIndicatorVariants({ size }),\n )}\n >\n <FontAwesomeIcon\n icon={faCheck}\n className={cn(\n 'pointer-events-none',\n selectItemIndicatorIconVariants({ size }),\n )}\n />\n </span>\n }\n />\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\n // Reset\n 'pointer-events-none',\n\n // Layout\n '-mx-1 my-1 h-px',\n\n // Theme\n 'bg-slate-200',\n\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\n // Layout\n 'top-0 w-full flex items-center justify-center',\n 'cursor-default',\n\n // Theme\n 'bg-white py-1',\n\n // Icons\n \"[&_svg:not([class*='size-'])]:size-3\",\n\n className,\n )}\n {...props}\n >\n <FontAwesomeIcon icon={faChevronUp} className=\"size-3 pointer-events-none\" />\n </SelectPrimitive.ScrollUpArrow>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\n // Layout\n 'bottom-0 w-full flex items-center justify-center',\n 'cursor-default',\n\n // Theme\n 'bg-white py-1',\n\n // Icons\n \"[&_svg:not([class*='size-'])]:size-3\",\n\n className,\n )}\n {...props}\n >\n <FontAwesomeIcon icon={faChevronDown} className=\"size-3 pointer-events-none\" />\n </SelectPrimitive.ScrollDownArrow>\n );\n}\n/* eslint-enable no-use-before-define */\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"mappings":";;;;;;;;;;AASA,IAAM,wBAAwB,IAAI,IAAI;CAClC,UAAU,EACN,MAAM;EACF,IAAI;EACJ,IAAI;EACJ,SAAS;EACT,IAAI;EACJ,IAAI;EACP,EACJ;CACD,iBAAiB,EACb,MAAM,WACT;CACJ,CAAC;AAEF,IAAM,4BAA4B,IAAI,IAAI;CACtC,UAAU,EACN,MAAM;EACF,IAAI;EACJ,IAAI;EACJ,SAAS;EACT,IAAI;EACJ,IAAI;EACP,EACJ;CACD,iBAAiB,EACb,MAAM,WACT;CACJ,CAAC;AAEF,IAAM,8BAA8B,IAAI,IAAI;CACxC,UAAU,EACN,MAAM;EACF,IAAI;EACJ,IAAI;EACJ,SAAS;EACT,IAAI;EACJ,IAAI;EACP,EACJ;CACD,iBAAiB,EACb,MAAM,WACT;CACJ,CAAC;AACF,IAAM,kCAAkC,IAAI,IAAI;CAC5C,UAAU,EACN,MAAM;EACF,IAAI;EACJ,IAAI;EACJ,SAAS;EACT,IAAI;EACJ,IAAI;EACP,EACJ;CACD,iBAAiB,EACb,MAAM,WACT;CACJ,CAAC;AAEF,IAAM,sBAAsB,IAAI,CAE5B,iBACH,EAAE;CACC,UAAU,EACN,MAAM;EACF,IAAI;EACJ,IAAI;EACJ,SAAS;EACT,IAAI;EACJ,IAAI;EACP,EACJ;CACD,iBAAiB,EACb,MAAM,WACT;CACJ,CAAC;AAEF,IAAM,qBAAqB,IAAI,IAAI;CAC/B,UAAU;EACN,MAAM;GACF,IAAI;GACJ,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GAGP;EACD,SAAS;GACL,SAAS;GACT,aAAa;GAChB;EACJ;CACD,iBAAiB;EACb,MAAM;EACN,SAAS;EACZ;CACJ,CAAC;AAIF,IAAM,gBAAgB,cAAoC,EAAE,MAAM,WAAW,CAAC;AAE9E,SAAS,OAAO,EACZ,OAAO,WACP,UACA,GAAG,SACiE;AACpE,QACI,oBAAC,cAAc,UAAf;EAAwB,OAAO,EAAE,MAAM;YACnC,oBAAC,SAAgB,MAAjB;GAAsB,aAAU;GAAS,aAAW;GAAM,GAAI;GACzD;GACkB,CAAA;EACF,CAAA;;AAIjC,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;AACvE,QACI,oBAAC,SAAgB,OAAjB;EACI,aAAU;EACV,WAAW,GACP,UACH;EACD,GAAI;EACN,CAAA;;AAIV,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;AACvE,QACI,oBAAC,SAAgB,OAAjB;EACI,aAAU;EACV,WAAW,GAEP,6DAEA,UACH;EACD,GAAI;EACN,CAAA;;AAIV,SAAS,cAAc,EACnB,WACA,MACA,UACA,GAAG,SAGJ;CACC,MAAM,UAAU,WAAW,cAAc;CACzC,MAAM,YAAY,QAAQ,QAAQ,QAAQ;AAE1C,QACI,qBAAC,SAAgB,SAAjB;EACI,aAAU;EACV,aAAW;EACX,WAAW,GAEP,sGAGA,SAGA,gBACA,6BAGA,mCAGA,mCACA,2CACA,sCACA,2CAGA,yIACA,0JAGA,mDAGA,gDAEA,sBAAsB,EAAE,MAAM,WAAW,CAAC,EAE1C,UACH;EACD,GAAI;YArCR,CAuCK,UACD,oBAAC,SAAgB,MAAjB,EACI,QACI,oBAAC,iBAAD;GACI,MAAM;GACN,WAAW,GACP,uBACA,0BAA0B,EAAE,MAAM,WAAW,CAAC,CACjD;GACH,CAAA,EAER,CAAA,CACoB;;;AAKlC,SAAS,cAAc,EACnB,WACA,UACA,OAAO,UACP,aAAa,GACb,QAAQ,UACR,cAAc,GACd,uBAAuB,MACvB,gBACA,GAAG,SAKA;CACH,MAAM,0BAA0B,oBAAoB;CACpD,MAAM,0BAA0B,oBAAoB;CACpD,MAAM,yBAAyB,mBAC3B,mCAAmC,aAAa,UAAU,KAAA;AAG9D,QACI,oBAAC,SAAgB,QAAjB;EAAwB,WAAW;EAAyB,WAAW;YACnE,oBAAC,SAAgB,YAAjB;GACU;GACM;GACL;GACM;GACS;GACtB,gBAAgB;GAChB,WAAU;aAEV,qBAAC,SAAgB,OAAjB;IACI,aAAU;IACV,sBAAoB;IACpB,WAAW,GAEP,2DAGA,0BACA,uCAGA,uBACA,wEAGA,gBACA,gDACA,8CACA,gDACA,0CACA,0CACA,0CACA,0CACA,kDACA,+CACA,0CACA,+BAEA,UACH;IACD,GAAI;cA/BR;KAiCI,oBAAC,sBAAD,EAAwB,CAAA;KACxB,oBAAC,SAAgB,MAAjB,EAAuB,UAAgC,CAAA;KACvD,oBAAC,wBAAD,EAA0B,CAAA;KACN;;GACC,CAAA;EACR,CAAA;;AAIjC,SAAS,YAAY,EACjB,WACA,GAAG,SAC8B;CACjC,MAAM,EAAE,SAAS,WAAW,cAAc;AAE1C,QACI,oBAAC,SAAgB,YAAjB;EACI,aAAU;EACV,WAAW,GAEP,kBAGA,oBAAoB,EAAE,MAAM,CAAC,EAE7B,UACH;EACD,GAAI;EACN,CAAA;;AAIV,SAAS,WAAW,EAChB,WACA,UACA,GAAG,SACwB;CAC3B,MAAM,EAAE,SAAS,WAAW,cAAc;AAE1C,QACI,qBAAC,SAAgB,MAAjB;EACI,aAAU;EACV,WAAW,GAEP,+EAGA,WACA,qEAGA,sDAGA,8DAGA,gDAEA,mBAAmB,EAAE,MAAM,CAAC,EAE5B,UACH;EACD,GAAI;YAvBR,CAyBI,oBAAC,SAAgB,UAAjB;GAA0B,WAAU;GAC/B;GACsB,CAAA,EAC3B,oBAAC,SAAgB,eAAjB,EACI,QACI,oBAAC,QAAD;GACI,WAAW,GACP,iEAEA,4BAA4B,EAAE,MAAM,CAAC,CACxC;aAED,oBAAC,iBAAD;IACI,MAAM;IACN,WAAW,GACP,uBACA,gCAAgC,EAAE,MAAM,CAAC,CAC5C;IACH,CAAA;GACC,CAAA,EAEb,CAAA,CACiB;;;AAI/B,SAAS,gBAAgB,EACrB,WACA,GAAG,SAC6B;AAChC,QACI,oBAAC,SAAgB,WAAjB;EACI,aAAU;EACV,WAAW,GAEP,uBAGA,mBAGA,gBAEA,UACH;EACD,GAAI;EACN,CAAA;;AAIV,SAAS,qBAAqB,EAC1B,WACA,GAAG,SACkD;AACrD,QACI,oBAAC,SAAgB,eAAjB;EACI,aAAU;EACV,WAAW,GAEP,iDACA,kBAGA,iBAGA,wCAEA,UACH;EACD,GAAI;YAEJ,oBAAC,iBAAD;GAAiB,MAAM;GAAa,WAAU;GAA+B,CAAA;EACjD,CAAA;;AAIxC,SAAS,uBAAuB,EAC5B,WACA,GAAG,SACoD;AACvD,QACI,oBAAC,SAAgB,iBAAjB;EACI,aAAU;EACV,WAAW,GAEP,oDACA,kBAGA,iBAGA,wCAEA,UACH;EACD,GAAI;YAEJ,oBAAC,iBAAD;GAAiB,MAAM;GAAe,WAAU;GAA+B,CAAA;EACjD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../src/components/TimePicker.tsx"],"names":[],"mappings":"AAaA,wBAAgB,UAAU,CAAC,EACvB,KAAK,EACL,aAAa,EACb,WAAgB,EAChB,SAAS,EACT,QAAgB,EAChB,SAAiB,EACjB,GAAG,KAAK,EACX,EAAE;IACC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,
|
|
1
|
+
{"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../src/components/TimePicker.tsx"],"names":[],"mappings":"AAaA,wBAAgB,UAAU,CAAC,EACvB,KAAK,EACL,aAAa,EACb,WAAgB,EAChB,SAAS,EACT,QAAgB,EAChB,SAAiB,EACjB,GAAG,KAAK,EACX,EAAE;IACC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,2CAiDA"}
|
|
@@ -24,6 +24,7 @@ function TimePicker({ value, onValueChange, placeholder = "", className, disable
|
|
|
24
24
|
className: cn("mr-1 text-gray-400")
|
|
25
25
|
}), /* @__PURE__ */ jsx(SelectValue, { placeholder })]
|
|
26
26
|
}), /* @__PURE__ */ jsx(SelectContent, {
|
|
27
|
+
alignItemWithTrigger: false,
|
|
27
28
|
className: cn("max-h-[15rem] min-w-[8rem]"),
|
|
28
29
|
children: timeOptions.map((option) => {
|
|
29
30
|
return /* @__PURE__ */ jsx(SelectItem, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimePicker.js","names":[],"sources":["../../src/components/TimePicker.tsx"],"sourcesContent":["import {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@verbb/plugin-kit-react/components';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faClock } from '@fortawesome/pro-solid-svg-icons';\n\nimport { cn, generateTimeOptions } from '@verbb/plugin-kit-react/utils';\n\nexport function TimePicker({\n value,\n onValueChange,\n placeholder = '',\n className,\n disabled = false,\n isInvalid = false,\n ...props\n}: {\n value: string;\n onValueChange?: (value: string) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n isInvalid?: boolean;\n}) {\n // Use cached time options instead of generating on every render\n const timeOptions = generateTimeOptions();\n\n return (\n <Select\n value={value}\n onValueChange={(nextValue) => { onValueChange?.(String(nextValue ?? '')); }}\n disabled={disabled}\n {...props}\n >\n <SelectTrigger\n aria-invalid={isInvalid}\n className={cn(\n 'min-w-[7rem] min-h-[2.125rem]! h-[2.125rem]!',\n 'w-[130px] justify-start text-left font-normal',\n 'bg-transparent border border-slate-400!',\n 'hover:bg-slate-50!',\n 'active:bg-slate-150!',\n 'data-[popup-open]:bg-slate-150!',\n className,\n )}>\n <FontAwesomeIcon\n icon={faClock}\n className={cn(\n 'mr-1 text-gray-400',\n )}\n />\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent\n className={cn(\n 'max-h-[15rem] min-w-[8rem]',\n )}\n >\n {timeOptions.map((option) => {\n return (\n <SelectItem\n key={option.value}\n value={option.value}\n >\n {option.label}\n </SelectItem>\n );\n })}\n </SelectContent>\n </Select>\n );\n}\n"],"mappings":";;;;;;;;;AAaA,SAAgB,WAAW,EACvB,OACA,eACA,cAAc,IACd,WACA,WAAW,OACX,YAAY,OACZ,GAAG,SAQJ;CAEC,MAAM,cAAc,qBAAqB;AAEzC,QACI,qBAAC,QAAD;EACW;EACP,gBAAgB,cAAc;AAAE,mBAAgB,OAAO,aAAa,GAAG,CAAC;;EAC9D;EACV,GAAI;YAJR,CAMI,qBAAC,eAAD;GACI,gBAAc;GACd,WAAW,GACP,gDACA,iDACA,2CACA,sBACA,wBACA,mCACA,UACH;aAVL,CAWI,oBAAC,iBAAD;IACI,MAAM;IACN,WAAW,GACP,qBACH;IACH,CAAA,EACF,oBAAC,aAAD,EAA0B,aAAe,CAAA,CAC7B;MAChB,oBAAC,eAAD;GACI,WAAW,GACP,6BACH;aAEA,YAAY,KAAK,WAAW;AACzB,WACI,oBAAC,YAAD;KAEI,OAAO,OAAO;eAEb,OAAO;KACC,EAJJ,OAAO,MAIH;KAEnB;GACU,CAAA,CACX"}
|
|
1
|
+
{"version":3,"file":"TimePicker.js","names":[],"sources":["../../src/components/TimePicker.tsx"],"sourcesContent":["import {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@verbb/plugin-kit-react/components';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faClock } from '@fortawesome/pro-solid-svg-icons';\n\nimport { cn, generateTimeOptions } from '@verbb/plugin-kit-react/utils';\n\nexport function TimePicker({\n value,\n onValueChange,\n placeholder = '',\n className,\n disabled = false,\n isInvalid = false,\n ...props\n}: {\n value: string;\n onValueChange?: (value: string) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n isInvalid?: boolean;\n}) {\n // Use cached time options instead of generating on every render\n const timeOptions = generateTimeOptions();\n\n return (\n <Select\n value={value}\n onValueChange={(nextValue) => { onValueChange?.(String(nextValue ?? '')); }}\n disabled={disabled}\n {...props}\n >\n <SelectTrigger\n aria-invalid={isInvalid}\n className={cn(\n 'min-w-[7rem] min-h-[2.125rem]! h-[2.125rem]!',\n 'w-[130px] justify-start text-left font-normal',\n 'bg-transparent border border-slate-400!',\n 'hover:bg-slate-50!',\n 'active:bg-slate-150!',\n 'data-[popup-open]:bg-slate-150!',\n className,\n )}>\n <FontAwesomeIcon\n icon={faClock}\n className={cn(\n 'mr-1 text-gray-400',\n )}\n />\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent\n alignItemWithTrigger={false}\n className={cn(\n 'max-h-[15rem] min-w-[8rem]',\n )}\n >\n {timeOptions.map((option) => {\n return (\n <SelectItem\n key={option.value}\n value={option.value}\n >\n {option.label}\n </SelectItem>\n );\n })}\n </SelectContent>\n </Select>\n );\n}\n"],"mappings":";;;;;;;;;AAaA,SAAgB,WAAW,EACvB,OACA,eACA,cAAc,IACd,WACA,WAAW,OACX,YAAY,OACZ,GAAG,SAQJ;CAEC,MAAM,cAAc,qBAAqB;AAEzC,QACI,qBAAC,QAAD;EACW;EACP,gBAAgB,cAAc;AAAE,mBAAgB,OAAO,aAAa,GAAG,CAAC;;EAC9D;EACV,GAAI;YAJR,CAMI,qBAAC,eAAD;GACI,gBAAc;GACd,WAAW,GACP,gDACA,iDACA,2CACA,sBACA,wBACA,mCACA,UACH;aAVL,CAWI,oBAAC,iBAAD;IACI,MAAM;IACN,WAAW,GACP,qBACH;IACH,CAAA,EACF,oBAAC,aAAD,EAA0B,aAAe,CAAA,CAC7B;MAChB,oBAAC,eAAD;GACI,sBAAsB;GACtB,WAAW,GACP,6BACH;aAEA,YAAY,KAAK,WAAW;AACzB,WACI,oBAAC,YAAD;KAEI,OAAO,OAAO;eAEb,OAAO;KACC,EAJJ,OAAO,MAIH;KAEnB;GACU,CAAA,CACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeField.d.ts","sourceRoot":"","sources":["../../../src/forms/fields/DateTimeField.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DateTimeField.d.ts","sourceRoot":"","sources":["../../../src/forms/fields/DateTimeField.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG7D,KAAK,kBAAkB,GAAG;IACtB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;CACL,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,iBAAiB,kBAAkB,4CAoChE,CAAC"}
|
|
@@ -1,28 +1,21 @@
|
|
|
1
|
+
import { formatDateTimeValue, parseDateTimeValue } from "../../utils/datetime.js";
|
|
1
2
|
import { DatePicker } from "../../components/DatePicker.js";
|
|
2
3
|
import { TimePicker } from "../../components/TimePicker.js";
|
|
3
4
|
import "../../components/index.js";
|
|
4
5
|
import { FieldLayout } from "../Field.js";
|
|
5
6
|
import { useEngineField } from "../useEngineField.js";
|
|
6
|
-
import {
|
|
7
|
+
import { useMemo } from "react";
|
|
7
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
9
|
//#region src/forms/fields/DateTimeField.tsx
|
|
9
10
|
var DateTimeField = ({ form, field }) => {
|
|
10
11
|
const { value, setValue, errors } = useEngineField(form, field.name);
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
else if (dateValue) nextValue = (/* @__PURE__ */ new Date(`${dateValue.toISOString().split("T")[0]}T00:00:00`)).toISOString();
|
|
19
|
-
if (String(value ?? "") !== nextValue) setValue(nextValue);
|
|
20
|
-
}, [
|
|
21
|
-
dateValue,
|
|
22
|
-
timeValue,
|
|
23
|
-
setValue,
|
|
24
|
-
value
|
|
25
|
-
]);
|
|
12
|
+
const parsedValue = useMemo(() => parseDateTimeValue(value), [value]);
|
|
13
|
+
const handleDateChange = (nextValue) => {
|
|
14
|
+
setValue(formatDateTimeValue(nextValue ?? null, parsedValue.time));
|
|
15
|
+
};
|
|
16
|
+
const handleTimeChange = (nextTime) => {
|
|
17
|
+
setValue(formatDateTimeValue(parsedValue.date, nextTime));
|
|
18
|
+
};
|
|
26
19
|
return /* @__PURE__ */ jsx(FieldLayout, {
|
|
27
20
|
name: field.name,
|
|
28
21
|
label: field.label,
|
|
@@ -34,14 +27,12 @@ var DateTimeField = ({ form, field }) => {
|
|
|
34
27
|
children: /* @__PURE__ */ jsxs("div", {
|
|
35
28
|
className: "flex gap-2",
|
|
36
29
|
children: [/* @__PURE__ */ jsx(DatePicker, {
|
|
37
|
-
value:
|
|
38
|
-
onValueChange:
|
|
39
|
-
setDateValue(nextValue ?? null);
|
|
40
|
-
},
|
|
30
|
+
value: parsedValue.date,
|
|
31
|
+
onValueChange: handleDateChange,
|
|
41
32
|
isInvalid: errors.length > 0
|
|
42
33
|
}), /* @__PURE__ */ jsx(TimePicker, {
|
|
43
|
-
value:
|
|
44
|
-
onValueChange:
|
|
34
|
+
value: parsedValue.time,
|
|
35
|
+
onValueChange: handleTimeChange,
|
|
45
36
|
isInvalid: errors.length > 0
|
|
46
37
|
})]
|
|
47
38
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeField.js","names":[],"sources":["../../../src/forms/fields/DateTimeField.tsx"],"sourcesContent":["import { DatePicker, TimePicker } from '@verbb/plugin-kit-react/components';\nimport {
|
|
1
|
+
{"version":3,"file":"DateTimeField.js","names":[],"sources":["../../../src/forms/fields/DateTimeField.tsx"],"sourcesContent":["import { DatePicker, TimePicker } from '@verbb/plugin-kit-react/components';\nimport { formatDateTimeValue, parseDateTimeValue } from '@verbb/plugin-kit-react/utils/datetime';\nimport { useMemo } from 'react';\nimport { FieldLayout } from '../Field';\nimport type { SchemaFormEngineApi } from '../engine/context';\nimport { useEngineField } from '../useEngineField';\n\ntype DateTimeFieldProps = {\n form: SchemaFormEngineApi;\n field: {\n name: string;\n label?: string;\n instructions?: string;\n warning?: string;\n required?: boolean;\n };\n};\n\nexport const DateTimeField = ({ form, field }: DateTimeFieldProps) => {\n const { value, setValue, errors } = useEngineField(form, field.name);\n const parsedValue = useMemo(() => parseDateTimeValue(value), [value]);\n\n const handleDateChange = (nextValue?: Date) => {\n setValue(formatDateTimeValue(nextValue ?? null, parsedValue.time));\n };\n\n const handleTimeChange = (nextTime: string) => {\n setValue(formatDateTimeValue(parsedValue.date, nextTime));\n };\n\n return (\n <FieldLayout\n name={field.name}\n label={field.label}\n instructions={field.instructions}\n warning={field.warning}\n required={field.required}\n errors={errors}\n withControl={false}\n >\n <div className=\"flex gap-2\">\n <DatePicker\n value={parsedValue.date}\n onValueChange={handleDateChange}\n isInvalid={errors.length > 0}\n />\n <TimePicker\n value={parsedValue.time}\n onValueChange={handleTimeChange}\n isInvalid={errors.length > 0}\n />\n </div>\n </FieldLayout>\n );\n};\n"],"mappings":";;;;;;;;;AAkBA,IAAa,iBAAiB,EAAE,MAAM,YAAgC;CAClE,MAAM,EAAE,OAAO,UAAU,WAAW,eAAe,MAAM,MAAM,KAAK;CACpE,MAAM,cAAc,cAAc,mBAAmB,MAAM,EAAE,CAAC,MAAM,CAAC;CAErE,MAAM,oBAAoB,cAAqB;AAC3C,WAAS,oBAAoB,aAAa,MAAM,YAAY,KAAK,CAAC;;CAGtE,MAAM,oBAAoB,aAAqB;AAC3C,WAAS,oBAAoB,YAAY,MAAM,SAAS,CAAC;;AAG7D,QACI,oBAAC,aAAD;EACI,MAAM,MAAM;EACZ,OAAO,MAAM;EACb,cAAc,MAAM;EACpB,SAAS,MAAM;EACf,UAAU,MAAM;EACR;EACR,aAAa;YAEb,qBAAC,OAAD;GAAK,WAAU;aAAf,CACI,oBAAC,YAAD;IACI,OAAO,YAAY;IACnB,eAAe;IACf,WAAW,OAAO,SAAS;IAC7B,CAAA,EACF,oBAAC,YAAD;IACI,OAAO,YAAY;IACnB,eAAe;IACf,WAAW,OAAO,SAAS;IAC7B,CAAA,CACA;;EACI,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type ParsedDateTimeValue = {
|
|
2
|
+
date: Date | null;
|
|
3
|
+
time: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const parseLocalDate: (value: unknown) => Date | undefined;
|
|
6
|
+
export declare const parseDateTimeValue: (value: unknown) => ParsedDateTimeValue;
|
|
7
|
+
export declare const startOfMonth: (value: Date) => Date;
|
|
8
|
+
export declare const resolveCalendarMonth: (selected?: Date) => Date;
|
|
9
|
+
export declare const formatDateTimeValue: (date: Date | null, time: string) => string;
|
|
10
|
+
//# sourceMappingURL=datetime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datetime.d.ts","sourceRoot":"","sources":["../../src/utils/datetime.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,mBAAmB,GAAG;IAC9B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,IAAI,GAAG,SAEtD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,KAAG,mBA2CnD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,OAAO,IAAI,KAAG,IAE1C,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,WAAW,IAAI,KAAG,IAEtD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,MAAM,IAAI,GAAG,IAAI,EAAE,MAAM,MAAM,KAAG,MAQrE,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
//#region src/utils/datetime.ts
|
|
2
|
+
var pad2 = (value) => {
|
|
3
|
+
return String(value).padStart(2, "0");
|
|
4
|
+
};
|
|
5
|
+
var parseLocalDate = (value) => {
|
|
6
|
+
return parseDateTimeValue(value).date ?? void 0;
|
|
7
|
+
};
|
|
8
|
+
var parseDateTimeValue = (value) => {
|
|
9
|
+
if (value === null || value === void 0 || value === "") return {
|
|
10
|
+
date: null,
|
|
11
|
+
time: ""
|
|
12
|
+
};
|
|
13
|
+
if (value instanceof Date) {
|
|
14
|
+
if (Number.isNaN(value.getTime())) return {
|
|
15
|
+
date: null,
|
|
16
|
+
time: ""
|
|
17
|
+
};
|
|
18
|
+
return {
|
|
19
|
+
date: new Date(value.getFullYear(), value.getMonth(), value.getDate()),
|
|
20
|
+
time: `${pad2(value.getHours())}:${pad2(value.getMinutes())}`
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const stringValue = String(value).trim();
|
|
24
|
+
if (!stringValue) return {
|
|
25
|
+
date: null,
|
|
26
|
+
time: ""
|
|
27
|
+
};
|
|
28
|
+
const localMatch = stringValue.match(/^(\d{4})-(\d{2})-(\d{2})(?:[ T](\d{2}):(\d{2})(?::(\d{2}))?)?/);
|
|
29
|
+
if (localMatch && !/[zZ]$/.test(stringValue) && !/[+-]\d{2}:?\d{2}$/.test(stringValue)) {
|
|
30
|
+
const [, year, month, day, hour = "00", minute = "00"] = localMatch;
|
|
31
|
+
return {
|
|
32
|
+
date: new Date(Number(year), Number(month) - 1, Number(day)),
|
|
33
|
+
time: `${hour}:${minute}`
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const parsed = new Date(stringValue);
|
|
37
|
+
if (Number.isNaN(parsed.getTime())) return {
|
|
38
|
+
date: null,
|
|
39
|
+
time: ""
|
|
40
|
+
};
|
|
41
|
+
return {
|
|
42
|
+
date: new Date(parsed.getFullYear(), parsed.getMonth(), parsed.getDate()),
|
|
43
|
+
time: `${pad2(parsed.getHours())}:${pad2(parsed.getMinutes())}`
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
var startOfMonth = (value) => {
|
|
47
|
+
return new Date(value.getFullYear(), value.getMonth(), 1);
|
|
48
|
+
};
|
|
49
|
+
var resolveCalendarMonth = (selected) => {
|
|
50
|
+
return startOfMonth(selected ?? /* @__PURE__ */ new Date());
|
|
51
|
+
};
|
|
52
|
+
var formatDateTimeValue = (date, time) => {
|
|
53
|
+
if (!date) return "";
|
|
54
|
+
const [hour = "00", minute = "00"] = (time || "00:00").split(":");
|
|
55
|
+
return `${date.getFullYear()}-${pad2(date.getMonth() + 1)}-${pad2(date.getDate())} ${pad2(Number(hour))}:${pad2(Number(minute))}:00`;
|
|
56
|
+
};
|
|
57
|
+
//#endregion
|
|
58
|
+
export { formatDateTimeValue, parseDateTimeValue, parseLocalDate, resolveCalendarMonth, startOfMonth };
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=datetime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datetime.js","names":[],"sources":["../../src/utils/datetime.ts"],"sourcesContent":["const pad2 = (value: number): string => {\n return String(value).padStart(2, '0');\n};\n\nexport type ParsedDateTimeValue = {\n date: Date | null;\n time: string;\n};\n\nexport const parseLocalDate = (value: unknown): Date | undefined => {\n return parseDateTimeValue(value).date ?? undefined;\n};\n\nexport const parseDateTimeValue = (value: unknown): ParsedDateTimeValue => {\n if (value === null || value === undefined || value === '') {\n return { date: null, time: '' };\n }\n\n if (value instanceof Date) {\n if (Number.isNaN(value.getTime())) {\n return { date: null, time: '' };\n }\n\n return {\n date: new Date(value.getFullYear(), value.getMonth(), value.getDate()),\n time: `${pad2(value.getHours())}:${pad2(value.getMinutes())}`,\n };\n }\n\n const stringValue = String(value).trim();\n\n if (!stringValue) {\n return { date: null, time: '' };\n }\n\n const localMatch = stringValue.match(/^(\\d{4})-(\\d{2})-(\\d{2})(?:[ T](\\d{2}):(\\d{2})(?::(\\d{2}))?)?/);\n\n if (localMatch && !/[zZ]$/.test(stringValue) && !/[+-]\\d{2}:?\\d{2}$/.test(stringValue)) {\n const [, year, month, day, hour = '00', minute = '00'] = localMatch;\n\n return {\n date: new Date(Number(year), Number(month) - 1, Number(day)),\n time: `${hour}:${minute}`,\n };\n }\n\n const parsed = new Date(stringValue);\n\n if (Number.isNaN(parsed.getTime())) {\n return { date: null, time: '' };\n }\n\n return {\n date: new Date(parsed.getFullYear(), parsed.getMonth(), parsed.getDate()),\n time: `${pad2(parsed.getHours())}:${pad2(parsed.getMinutes())}`,\n };\n};\n\nexport const startOfMonth = (value: Date): Date => {\n return new Date(value.getFullYear(), value.getMonth(), 1);\n};\n\nexport const resolveCalendarMonth = (selected?: Date): Date => {\n return startOfMonth(selected ?? new Date());\n};\n\nexport const formatDateTimeValue = (date: Date | null, time: string): string => {\n if (!date) {\n return '';\n }\n\n const [hour = '00', minute = '00'] = (time || '00:00').split(':');\n\n return `${date.getFullYear()}-${pad2(date.getMonth() + 1)}-${pad2(date.getDate())} ${pad2(Number(hour))}:${pad2(Number(minute))}:00`;\n};\n"],"mappings":";AAAA,IAAM,QAAQ,UAA0B;AACpC,QAAO,OAAO,MAAM,CAAC,SAAS,GAAG,IAAI;;AAQzC,IAAa,kBAAkB,UAAqC;AAChE,QAAO,mBAAmB,MAAM,CAAC,QAAQ,KAAA;;AAG7C,IAAa,sBAAsB,UAAwC;AACvE,KAAI,UAAU,QAAQ,UAAU,KAAA,KAAa,UAAU,GACnD,QAAO;EAAE,MAAM;EAAM,MAAM;EAAI;AAGnC,KAAI,iBAAiB,MAAM;AACvB,MAAI,OAAO,MAAM,MAAM,SAAS,CAAC,CAC7B,QAAO;GAAE,MAAM;GAAM,MAAM;GAAI;AAGnC,SAAO;GACH,MAAM,IAAI,KAAK,MAAM,aAAa,EAAE,MAAM,UAAU,EAAE,MAAM,SAAS,CAAC;GACtE,MAAM,GAAG,KAAK,MAAM,UAAU,CAAC,CAAC,GAAG,KAAK,MAAM,YAAY,CAAC;GAC9D;;CAGL,MAAM,cAAc,OAAO,MAAM,CAAC,MAAM;AAExC,KAAI,CAAC,YACD,QAAO;EAAE,MAAM;EAAM,MAAM;EAAI;CAGnC,MAAM,aAAa,YAAY,MAAM,gEAAgE;AAErG,KAAI,cAAc,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,oBAAoB,KAAK,YAAY,EAAE;EACpF,MAAM,GAAG,MAAM,OAAO,KAAK,OAAO,MAAM,SAAS,QAAQ;AAEzD,SAAO;GACH,MAAM,IAAI,KAAK,OAAO,KAAK,EAAE,OAAO,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC;GAC5D,MAAM,GAAG,KAAK,GAAG;GACpB;;CAGL,MAAM,SAAS,IAAI,KAAK,YAAY;AAEpC,KAAI,OAAO,MAAM,OAAO,SAAS,CAAC,CAC9B,QAAO;EAAE,MAAM;EAAM,MAAM;EAAI;AAGnC,QAAO;EACH,MAAM,IAAI,KAAK,OAAO,aAAa,EAAE,OAAO,UAAU,EAAE,OAAO,SAAS,CAAC;EACzE,MAAM,GAAG,KAAK,OAAO,UAAU,CAAC,CAAC,GAAG,KAAK,OAAO,YAAY,CAAC;EAChE;;AAGL,IAAa,gBAAgB,UAAsB;AAC/C,QAAO,IAAI,KAAK,MAAM,aAAa,EAAE,MAAM,UAAU,EAAE,EAAE;;AAG7D,IAAa,wBAAwB,aAA0B;AAC3D,QAAO,aAAa,4BAAY,IAAI,MAAM,CAAC;;AAG/C,IAAa,uBAAuB,MAAmB,SAAyB;AAC5E,KAAI,CAAC,KACD,QAAO;CAGX,MAAM,CAAC,OAAO,MAAM,SAAS,SAAS,QAAQ,SAAS,MAAM,IAAI;AAEjE,QAAO,GAAG,KAAK,aAAa,CAAC,GAAG,KAAK,KAAK,UAAU,GAAG,EAAE,CAAC,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,GAAG,KAAK,OAAO,KAAK,CAAC,CAAC,GAAG,KAAK,OAAO,OAAO,CAAC,CAAC"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAGlC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAGlC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import { setTranslateFunction, setTranslationCategory, translate } from "./trans
|
|
|
5
5
|
import { getHostBridge, hostFormatDate, hostGetLocale, hostGetTimepickerOptions, hostOpenElementSelector, hostRequest, setHostBridge } from "./hostBridge.js";
|
|
6
6
|
import { ensureDocumentScrollStability } from "./documentScrollStability.js";
|
|
7
7
|
import { configurePluginKitReact } from "./config.js";
|
|
8
|
+
import { formatDateTimeValue, parseDateTimeValue, parseLocalDate, resolveCalendarMonth, startOfMonth } from "./datetime.js";
|
|
8
9
|
import { createCraftHostBridge } from "./craftHostBridge.js";
|
|
9
10
|
import { buildUniqueHandleFromSource, getDynamicReservedHandles } from "./handle.js";
|
|
10
11
|
import { evaluateCondition, extractFieldNames, extractFields, normalizeAttrs, traverseSchema } from "./schema.js";
|
|
@@ -29,6 +30,7 @@ var utils_exports = /* @__PURE__ */ __exportAll({
|
|
|
29
30
|
evaluateCondition: () => evaluateCondition,
|
|
30
31
|
extractFieldNames: () => extractFieldNames,
|
|
31
32
|
extractFields: () => extractFields,
|
|
33
|
+
formatDateTimeValue: () => formatDateTimeValue,
|
|
32
34
|
generateTimeOptions: () => generateTimeOptions,
|
|
33
35
|
getDynamicReservedHandles: () => getDynamicReservedHandles,
|
|
34
36
|
getHostBridge: () => getHostBridge,
|
|
@@ -49,12 +51,16 @@ var utils_exports = /* @__PURE__ */ __exportAll({
|
|
|
49
51
|
hostRequest: () => hostRequest,
|
|
50
52
|
normalizeAttrs: () => normalizeAttrs,
|
|
51
53
|
normalizeSchemaNode: () => normalizeSchemaNode,
|
|
54
|
+
parseDateTimeValue: () => parseDateTimeValue,
|
|
55
|
+
parseLocalDate: () => parseLocalDate,
|
|
56
|
+
resolveCalendarMonth: () => resolveCalendarMonth,
|
|
52
57
|
setHostBridge: () => setHostBridge,
|
|
53
58
|
setPortalClassName: () => setPortalClassName,
|
|
54
59
|
setPortalContainer: () => setPortalContainer,
|
|
55
60
|
setShadowRootSelectors: () => setShadowRootSelectors,
|
|
56
61
|
setTranslateFunction: () => setTranslateFunction,
|
|
57
62
|
setTranslationCategory: () => setTranslationCategory,
|
|
63
|
+
startOfMonth: () => startOfMonth,
|
|
58
64
|
translate: () => translate,
|
|
59
65
|
traverseSchema: () => traverseSchema,
|
|
60
66
|
validateFormValues: () => validateFormValues,
|
|
@@ -63,6 +69,6 @@ var utils_exports = /* @__PURE__ */ __exportAll({
|
|
|
63
69
|
import * as import__verbb_plugin_kit from "@verbb/plugin-kit";
|
|
64
70
|
__reExport(utils_exports, import__verbb_plugin_kit);
|
|
65
71
|
//#endregion
|
|
66
|
-
export { buildUniqueHandleFromSource, clearTimeOptionsCache, cn, configurePluginKitReact, createCraftHostBridge, createSchemaFieldIndex, ensureDocumentScrollStability, evaluateCondition, extractFieldNames, extractFields, generateTimeOptions, getDynamicReservedHandles, getHostBridge, getPortalClassName, getPortalContainer, getPortalTargetForAppend, getRichTextHtml, getRichTextText, getSchemaFieldIndex, getSchemaFieldNames, getShadowRootSelectors, hasSchemaErrors, hasSchemaErrorsCached, hostFormatDate, hostGetLocale, hostGetTimepickerOptions, hostOpenElementSelector, hostRequest, normalizeAttrs, normalizeSchemaNode, setHostBridge, setPortalClassName, setPortalContainer, setShadowRootSelectors, setTranslateFunction, setTranslationCategory, translate, traverseSchema, utils_exports, validateFormValues, zustandHmrFix };
|
|
72
|
+
export { buildUniqueHandleFromSource, clearTimeOptionsCache, cn, configurePluginKitReact, createCraftHostBridge, createSchemaFieldIndex, ensureDocumentScrollStability, evaluateCondition, extractFieldNames, extractFields, formatDateTimeValue, generateTimeOptions, getDynamicReservedHandles, getHostBridge, getPortalClassName, getPortalContainer, getPortalTargetForAppend, getRichTextHtml, getRichTextText, getSchemaFieldIndex, getSchemaFieldNames, getShadowRootSelectors, hasSchemaErrors, hasSchemaErrorsCached, hostFormatDate, hostGetLocale, hostGetTimepickerOptions, hostOpenElementSelector, hostRequest, normalizeAttrs, normalizeSchemaNode, parseDateTimeValue, parseLocalDate, resolveCalendarMonth, setHostBridge, setPortalClassName, setPortalContainer, setShadowRootSelectors, setTranslateFunction, setTranslationCategory, startOfMonth, translate, traverseSchema, utils_exports, validateFormValues, zustandHmrFix };
|
|
67
73
|
|
|
68
74
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/utils/index.ts"],"sourcesContent":["// Re-export all utilities from the base plugin-kit package\nexport * from '@verbb/plugin-kit';\n\n// Export local utilities\nexport * from './classes';\nexport * from './config';\nexport * from './documentScrollStability';\nexport * from './craftHostBridge';\nexport * from './handle';\nexport * from './hostBridge';\nexport * from './portal';\nexport * from './schema';\nexport * from './schemaFieldNames';\nexport * from './schemaIndex';\nexport * from './schemaIndexCache';\nexport * from './schemaNormalize';\nexport * from './store';\nexport * from './timeOptions';\nexport * from './tiptap';\nexport * from './translation';\nexport * from './validation';\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/utils/index.ts"],"sourcesContent":["// Re-export all utilities from the base plugin-kit package\nexport * from '@verbb/plugin-kit';\n\n// Export local utilities\nexport * from './classes';\nexport * from './config';\nexport * from './datetime';\nexport * from './documentScrollStability';\nexport * from './craftHostBridge';\nexport * from './handle';\nexport * from './hostBridge';\nexport * from './portal';\nexport * from './schema';\nexport * from './schemaFieldNames';\nexport * from './schemaIndex';\nexport * from './schemaIndexCache';\nexport * from './schemaNormalize';\nexport * from './store';\nexport * from './timeOptions';\nexport * from './tiptap';\nexport * from './translation';\nexport * from './validation';\n"],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verbb/plugin-kit-react",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -154,7 +154,7 @@
|
|
|
154
154
|
"@tiptap/react": "^3.22.4",
|
|
155
155
|
"@types/prismjs": "^1.26.6",
|
|
156
156
|
"@uiw/react-codemirror": "^4.25.10",
|
|
157
|
-
"@verbb/plugin-kit": "1.0.
|
|
157
|
+
"@verbb/plugin-kit": "1.0.7",
|
|
158
158
|
"class-variance-authority": "^0.7.1",
|
|
159
159
|
"clsx": "^2.1.1",
|
|
160
160
|
"cmdk": "^1.1.1",
|