@smwb/ui-solid 0.7.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/assets/styles/less/components/confirmDialog/confirmDialog.entry.css +1 -0
  2. package/dist/components/clickAwayListener/clickAwayListener.js +12 -8
  3. package/dist/components/clickAwayListener/clickAwayListener.js.map +1 -1
  4. package/dist/components/dataDisplay/treeView/treeView.d.ts +5 -1
  5. package/dist/components/dataDisplay/treeView/treeView.js +60 -50
  6. package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
  7. package/dist/components/feedBack/confirmDialog/confirmDialog.d.ts +27 -0
  8. package/dist/components/feedBack/confirmDialog/confirmDialog.js +108 -0
  9. package/dist/components/feedBack/confirmDialog/confirmDialog.js.map +1 -0
  10. package/dist/components/feedBack/confirmDialog/index.d.ts +2 -0
  11. package/dist/components/feedBack/modal/modal.js +49 -48
  12. package/dist/components/feedBack/modal/modal.js.map +1 -1
  13. package/dist/components/inputs/datePicker/datePicker.js +22 -22
  14. package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
  15. package/dist/components/inputs/dateTimePicker/dateTimePicker.js +21 -21
  16. package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  17. package/dist/components/inputs/selectField/dropdownMenu.js +1 -0
  18. package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
  19. package/dist/components/inputs/timePicker/timePicker.js +16 -16
  20. package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
  21. package/dist/components/layout/sheet/sheet.js +95 -92
  22. package/dist/components/layout/sheet/sheet.js.map +1 -1
  23. package/dist/headless/components/clickAwayListener/clickAwayListener.js +12 -8
  24. package/dist/headless/components/clickAwayListener/clickAwayListener.js.map +1 -1
  25. package/dist/headless/components/dataDisplay/treeView/treeView.js +60 -50
  26. package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
  27. package/dist/headless/components/feedBack/confirmDialog/confirmDialog.js +107 -0
  28. package/dist/headless/components/feedBack/confirmDialog/confirmDialog.js.map +1 -0
  29. package/dist/headless/components/feedBack/modal/modal.js +49 -48
  30. package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
  31. package/dist/headless/components/inputs/datePicker/datePicker.js +19 -19
  32. package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
  33. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +21 -21
  34. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  35. package/dist/headless/components/inputs/selectField/dropdownMenu.js +1 -0
  36. package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
  37. package/dist/headless/components/inputs/timePicker/timePicker.js +16 -16
  38. package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
  39. package/dist/headless/components/layout/sheet/sheet.js +95 -92
  40. package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
  41. package/dist/headless/index.js +201 -199
  42. package/dist/headless/index.js.map +1 -1
  43. package/dist/headless/primitives/overlayLayer.js +11 -0
  44. package/dist/headless/primitives/overlayLayer.js.map +1 -0
  45. package/dist/headless/source/components/clickAwayListener/clickAwayListener.jsx +2 -0
  46. package/dist/headless/source/components/clickAwayListener/clickAwayListener.jsx.map +1 -1
  47. package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx +10 -2
  48. package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
  49. package/dist/headless/source/components/feedBack/confirmDialog/confirmDialog.jsx +76 -0
  50. package/dist/headless/source/components/feedBack/confirmDialog/confirmDialog.jsx.map +1 -0
  51. package/dist/headless/source/components/feedBack/confirmDialog/index.js +5 -0
  52. package/dist/headless/source/components/feedBack/confirmDialog/index.js.map +7 -0
  53. package/dist/headless/source/components/feedBack/modal/modal.jsx +5 -1
  54. package/dist/headless/source/components/feedBack/modal/modal.jsx.map +1 -1
  55. package/dist/headless/source/components/inputs/datePicker/datePicker.jsx +1 -0
  56. package/dist/headless/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
  57. package/dist/headless/source/components/inputs/dateTimePicker/dateTimePicker.jsx +1 -0
  58. package/dist/headless/source/components/inputs/dateTimePicker/dateTimePicker.jsx.map +1 -1
  59. package/dist/headless/source/components/inputs/selectField/dropdownMenu.jsx +1 -0
  60. package/dist/headless/source/components/inputs/selectField/dropdownMenu.jsx.map +1 -1
  61. package/dist/headless/source/components/inputs/timePicker/timePicker.jsx +1 -0
  62. package/dist/headless/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
  63. package/dist/headless/source/components/layout/sheet/sheet.jsx +13 -3
  64. package/dist/headless/source/components/layout/sheet/sheet.jsx.map +1 -1
  65. package/dist/headless/source/index.js +2 -0
  66. package/dist/headless/source/index.js.map +2 -2
  67. package/dist/headless/source/primitives/overlayLayer.js +18 -0
  68. package/dist/headless/source/primitives/overlayLayer.js.map +7 -0
  69. package/dist/index.d.ts +2 -0
  70. package/dist/index.js +201 -199
  71. package/dist/index.js.map +1 -1
  72. package/dist/primitives/overlayLayer.d.ts +13 -0
  73. package/dist/primitives/overlayLayer.js +11 -0
  74. package/dist/primitives/overlayLayer.js.map +1 -0
  75. package/dist/source/components/clickAwayListener/clickAwayListener.jsx +2 -0
  76. package/dist/source/components/clickAwayListener/clickAwayListener.jsx.map +1 -1
  77. package/dist/source/components/dataDisplay/treeView/treeView.jsx +10 -2
  78. package/dist/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
  79. package/dist/source/components/feedBack/confirmDialog/confirmDialog.jsx +77 -0
  80. package/dist/source/components/feedBack/confirmDialog/confirmDialog.jsx.map +1 -0
  81. package/dist/source/components/feedBack/confirmDialog/index.js +5 -0
  82. package/dist/source/components/feedBack/confirmDialog/index.js.map +7 -0
  83. package/dist/source/components/feedBack/modal/modal.jsx +5 -1
  84. package/dist/source/components/feedBack/modal/modal.jsx.map +1 -1
  85. package/dist/source/components/inputs/datePicker/datePicker.jsx +1 -0
  86. package/dist/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
  87. package/dist/source/components/inputs/dateTimePicker/dateTimePicker.jsx +1 -0
  88. package/dist/source/components/inputs/dateTimePicker/dateTimePicker.jsx.map +1 -1
  89. package/dist/source/components/inputs/selectField/dropdownMenu.jsx +1 -0
  90. package/dist/source/components/inputs/selectField/dropdownMenu.jsx.map +1 -1
  91. package/dist/source/components/inputs/timePicker/timePicker.jsx +1 -0
  92. package/dist/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
  93. package/dist/source/components/layout/sheet/sheet.jsx +13 -3
  94. package/dist/source/components/layout/sheet/sheet.jsx.map +1 -1
  95. package/dist/source/index.js +2 -0
  96. package/dist/source/index.js.map +2 -2
  97. package/dist/source/primitives/overlayLayer.js +18 -0
  98. package/dist/source/primitives/overlayLayer.js.map +7 -0
  99. package/package.json +11 -5
@@ -1 +1 @@
1
- {"version":3,"file":"modal.js","sources":["../../../../../src/components/feedBack/modal/modal.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, createEffect, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { Dynamic, Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { createCssTransition } from \"../../../primitives/createCssTransition\";\nimport { createFocusTrap } from \"../../../primitives/createFocusTrap\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ModalProps {\n size?: \"small\" | \"medium\" | \"large\" | \"fullscreen\";\n closeOnOutsideClick?: boolean;\n onClose?: () => void;\n open: boolean;\n animation?: \"fade\" | \"scale\" | \"drop\";\n class?: string;\n backdrop?: \"blured\" | \"dark\" | \"transparent\" | \"darkBlured\";\n asForm?: boolean;\n disableAppearAnimation?: boolean;\n /** ARIA role of the dialog. */\n role?: \"dialog\" | \"alertdialog\";\n /** Close the modal when Escape is pressed. */\n closeOnEsc?: boolean;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n \"aria-describedby\"?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst OVERLAY_CLASSNAMES = {\n appear: \"smwb-modal__overlay-appear\",\n appearActive: \"smwb-modal__overlay-appear-active\",\n appearDone: \"smwb-modal__overlay-appear-done\",\n enter: \"smwb-modal__overlay-enter\",\n enterActive: \"smwb-modal__overlay-enter-active\",\n enterDone: \"smwb-modal__overlay-enter-done\",\n exit: \"smwb-modal__overlay-exit\",\n exitActive: \"smwb-modal__overlay-exit-active\",\n};\n\nfunction ModalBase(props: ParentProps<ModalProps>): JSX.Element {\n const merged = mergeProps(\n {\n animation: \"fade\" as const,\n backdrop: \"dark\" as const,\n size: \"large\" as const,\n closeOnOutsideClick: true,\n asForm: false,\n disableAppearAnimation: false,\n role: \"dialog\" as const,\n closeOnEsc: true,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"children\",\n \"onClose\",\n \"open\",\n \"class\",\n \"animation\",\n \"backdrop\",\n \"size\",\n \"closeOnOutsideClick\",\n \"asForm\",\n \"disableAppearAnimation\",\n \"role\",\n \"closeOnEsc\",\n \"ref\",\n ]);\n\n let contentEl: HTMLDivElement | undefined;\n\n const transition = createCssTransition({\n in: () => local.open,\n timeout: { appear: 225, enter: 225, exit: 150 },\n classNames: OVERLAY_CLASSNAMES,\n appear: !local.disableAppearAnimation,\n });\n\n createFocusTrap({ active: () => local.open && transition.mounted(), container: () => contentEl });\n\n createEffect(() => {\n if (!local.open || !local.closeOnEsc || !local.onClose) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\") local.onClose?.();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n return (\n <Show when={transition.mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <div\n class={cn(\"smwb-modal__overlay\", `smwb-${local.backdrop}`, `smwb-${local.size}`, transition.classes())}\n onClick={local.closeOnOutsideClick && local.onClose ? () => local.onClose?.() : undefined}\n >\n <Dynamic\n component={local.asForm ? \"form\" : \"div\"}\n {...rest}\n ref={mergeRefs(local.ref, (el) => (contentEl = el as HTMLDivElement))}\n class={cn(\"smwb-modal\", `smwb-${local.size}`, `smwb-${local.animation}`, local.class)}\n onClick={(event: MouseEvent) => event.stopPropagation()}\n role={local.role}\n aria-modal=\"true\"\n >\n {local.children}\n </Dynamic>\n </div>\n </Portal>\n </Show>\n );\n}\n\nexport interface ModalSlotProps {\n class?: string;\n}\n\nexport function Header(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__header\", props.class)}>{props.children}</div>;\n}\n\nexport function Content(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__content\", props.class)}>{props.children}</div>;\n}\n\nexport function Footer(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__footer\", props.class)}>{props.children}</div>;\n}\n\nexport const Modal = Object.assign(ModalBase, { Footer, Header, Content });\n\nexport default Modal;\n"],"names":["OVERLAY_CLASSNAMES","appear","appearActive","appearDone","enter","enterActive","enterDone","exit","exitActive","ModalBase","props","merged","mergeProps","animation","backdrop","size","closeOnOutsideClick","asForm","disableAppearAnimation","role","closeOnEsc","local","rest","splitProps","contentEl","transition","createCssTransition","in","open","timeout","classNames","createFocusTrap","active","mounted","container","createEffect","onClose","onKeyDown","event","key","document","addEventListener","onCleanup","removeEventListener","_$createComponent","Show","when","children","Portal","mount","isServer","undefined","body","_el$","_tmpl$","_$addEventListener","_$insert","Dynamic","_$mergeProps","component","ref","r$","_ref$","mergeRefs","el","cn","class","onClick","stopPropagation","_$effect","_$className","classes","Header","_el$2","Content","_el$3","Footer","_el$4","Modal","Object","assign","_$delegateEvents"],"mappings":"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"}
1
+ {"version":3,"file":"modal.js","sources":["../../../../../src/components/feedBack/modal/modal.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, createEffect, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { Dynamic, Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { createCssTransition } from \"../../../primitives/createCssTransition\";\nimport { createFocusTrap } from \"../../../primitives/createFocusTrap\";\nimport { isTopOverlayLayer } from \"../../../primitives/overlayLayer\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ModalProps {\n size?: \"small\" | \"medium\" | \"large\" | \"fullscreen\";\n closeOnOutsideClick?: boolean;\n onClose?: () => void;\n open: boolean;\n animation?: \"fade\" | \"scale\" | \"drop\";\n class?: string;\n backdrop?: \"blured\" | \"dark\" | \"transparent\" | \"darkBlured\";\n asForm?: boolean;\n disableAppearAnimation?: boolean;\n /** ARIA role of the dialog. */\n role?: \"dialog\" | \"alertdialog\";\n /** Close the modal when Escape is pressed. */\n closeOnEsc?: boolean;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n \"aria-describedby\"?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst OVERLAY_CLASSNAMES = {\n appear: \"smwb-modal__overlay-appear\",\n appearActive: \"smwb-modal__overlay-appear-active\",\n appearDone: \"smwb-modal__overlay-appear-done\",\n enter: \"smwb-modal__overlay-enter\",\n enterActive: \"smwb-modal__overlay-enter-active\",\n enterDone: \"smwb-modal__overlay-enter-done\",\n exit: \"smwb-modal__overlay-exit\",\n exitActive: \"smwb-modal__overlay-exit-active\",\n};\n\nfunction ModalBase(props: ParentProps<ModalProps>): JSX.Element {\n const merged = mergeProps(\n {\n animation: \"fade\" as const,\n backdrop: \"dark\" as const,\n size: \"large\" as const,\n closeOnOutsideClick: true,\n asForm: false,\n disableAppearAnimation: false,\n role: \"dialog\" as const,\n closeOnEsc: true,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"children\",\n \"onClose\",\n \"open\",\n \"class\",\n \"animation\",\n \"backdrop\",\n \"size\",\n \"closeOnOutsideClick\",\n \"asForm\",\n \"disableAppearAnimation\",\n \"role\",\n \"closeOnEsc\",\n \"ref\",\n ]);\n\n let contentEl: HTMLDivElement | undefined;\n let overlayEl: HTMLDivElement | undefined;\n\n const transition = createCssTransition({\n in: () => local.open,\n timeout: { appear: 225, enter: 225, exit: 150 },\n classNames: OVERLAY_CLASSNAMES,\n appear: !local.disableAppearAnimation,\n });\n\n createFocusTrap({ active: () => local.open && transition.mounted(), container: () => contentEl });\n\n createEffect(() => {\n if (!local.open || !local.closeOnEsc || !local.onClose) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n // Only the topmost overlay layer reacts to Escape.\n if (event.key === \"Escape\" && isTopOverlayLayer(overlayEl)) local.onClose?.();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n return (\n <Show when={transition.mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <div\n ref={(el) => (overlayEl = el)}\n data-smwb-overlay-layer\n class={cn(\"smwb-modal__overlay\", `smwb-${local.backdrop}`, `smwb-${local.size}`, transition.classes())}\n onClick={local.closeOnOutsideClick && local.onClose ? () => local.onClose?.() : undefined}\n >\n <Dynamic\n component={local.asForm ? \"form\" : \"div\"}\n {...rest}\n ref={mergeRefs(local.ref, (el) => (contentEl = el as HTMLDivElement))}\n class={cn(\"smwb-modal\", `smwb-${local.size}`, `smwb-${local.animation}`, local.class)}\n onClick={(event: MouseEvent) => event.stopPropagation()}\n role={local.role}\n aria-modal=\"true\"\n >\n {local.children}\n </Dynamic>\n </div>\n </Portal>\n </Show>\n );\n}\n\nexport interface ModalSlotProps {\n class?: string;\n}\n\nexport function Header(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__header\", props.class)}>{props.children}</div>;\n}\n\nexport function Content(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__content\", props.class)}>{props.children}</div>;\n}\n\nexport function Footer(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__footer\", props.class)}>{props.children}</div>;\n}\n\nexport const Modal = Object.assign(ModalBase, { Footer, Header, Content });\n\nexport default Modal;\n"],"names":["OVERLAY_CLASSNAMES","appear","appearActive","appearDone","enter","enterActive","enterDone","exit","exitActive","ModalBase","props","merged","mergeProps","animation","backdrop","size","closeOnOutsideClick","asForm","disableAppearAnimation","role","closeOnEsc","local","rest","splitProps","contentEl","overlayEl","transition","createCssTransition","in","open","timeout","classNames","createFocusTrap","active","mounted","container","createEffect","onClose","onKeyDown","event","key","isTopOverlayLayer","document","addEventListener","onCleanup","removeEventListener","_$createComponent","Show","when","children","Portal","mount","isServer","undefined","body","_el$","_tmpl$","_$addEventListener","_$use","el","_$insert","Dynamic","_$mergeProps","component","ref","r$","_ref$","mergeRefs","cn","class","onClick","stopPropagation","_$effect","_$className","classes","Header","_el$2","_tmpl$2","Content","_el$3","Footer","_el$4","Modal","Object","assign","_$delegateEvents"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { createComponent as a, mergeProps as $, Portal as ne, use as oe, insert as x, effect as ie, style as le, setAttribute as se, isServer as ce, template as de } from "solid-js/web";
1
+ import { createComponent as a, mergeProps as $, Portal as ne, use as oe, insert as x, effect as le, style as ie, setAttribute as se, isServer as ce, template as de } from "solid-js/web";
2
2
  import { splitProps as ue, createSignal as c, createEffect as B, createMemo as ge, onCleanup as me, Show as b } from "solid-js";
3
3
  import { buildFloatingMiddleware as fe, resolvePlacement as he } from "../../../utils/floating.js";
4
4
  import { createFloating as be } from "../../../primitives/createFloating.js";
5
- import { DataPickerHeader as pe } from "./dataPickerHeader.js";
6
- import { DataPickerDays as ve } from "./dataPickerDays.js";
5
+ import { DataPickerHeader as ve } from "./dataPickerHeader.js";
6
+ import { DataPickerDays as pe } from "./dataPickerDays.js";
7
7
  import { DatePickerList as L } from "./datePickerList.js";
8
8
  import { DataPickerInput as we } from "./dataPickerInput.js";
9
9
  import { DatePickerIconButton as De } from "./datePickerIconButton.js";
@@ -13,18 +13,18 @@ import { mergeRefs as E } from "../../../primitives/mergeRefs.js";
13
13
  import { TextField as Oe } from "../textField/textField.js";
14
14
  import { Icon as Pe } from "../../base/icon/icon.js";
15
15
  import { ClickAwayListener as Se } from "../../clickAwayListener/clickAwayListener.js";
16
- var Fe = /* @__PURE__ */ de('<div class=smwb-date-picker data-testid=date-picker role=dialog aria-modal=false style="transition:opacity 150ms ease-in-out"><div class=smwb-date-picker__inner><div class=smwb-date-picker__body>');
16
+ var Fe = /* @__PURE__ */ de('<div class=smwb-date-picker data-testid=date-picker data-smwb-overlay-layer role=dialog aria-modal=false style="transition:opacity 150ms ease-in-out"><div class=smwb-date-picker__inner><div class=smwb-date-picker__body>');
17
17
  const Me = 150;
18
18
  function Ge(C) {
19
- const [e, y] = ue(C, ["value", "onChange", "showDaysOutsideMonth", "disablePast", "disableFuture", "weekStartsOn", "placement", "disabled", "disableCalendar", "calendarAriaLabel", "minDate", "maxDate", "isDateDisabled", "locale", "format", "range", "rangeValue", "onRangeChange", "calendarIcon", "onBlur", "ref"]), p = () => e.value === void 0 ? void 0 : new Date(e.value), k = () => e.rangeValue !== void 0, [q, z] = c([void 0, void 0]), l = () => k() && e.rangeValue ? e.rangeValue : q(), V = p(), [s, u] = c(D(V) ? V : /* @__PURE__ */ new Date()), [g, m] = c(o.days), [H, f] = c(!1);
19
+ const [e, y] = ue(C, ["value", "onChange", "showDaysOutsideMonth", "disablePast", "disableFuture", "weekStartsOn", "placement", "disabled", "disableCalendar", "calendarAriaLabel", "minDate", "maxDate", "isDateDisabled", "locale", "format", "range", "rangeValue", "onRangeChange", "calendarIcon", "onBlur", "ref"]), v = () => e.value === void 0 ? void 0 : new Date(e.value), k = () => e.rangeValue !== void 0, [q, z] = c([void 0, void 0]), i = () => k() && e.rangeValue ? e.rangeValue : q(), V = v(), [s, u] = c(D(V) ? V : /* @__PURE__ */ new Date()), [g, m] = c(o.days), [H, f] = c(!1);
20
20
  let O, P;
21
- const S = () => he(e.placement ?? "bottom-start"), v = be({
21
+ const S = () => he(e.placement ?? "bottom-start"), p = be({
22
22
  placement: () => S().placement,
23
23
  middleware: () => fe(S())
24
24
  });
25
25
  B(() => {
26
26
  if (e.disabled) return;
27
- const t = p();
27
+ const t = v();
28
28
  u(D(t) ? t : /* @__PURE__ */ new Date());
29
29
  });
30
30
  const j = () => e.weekStartsOn ?? 1, G = (t) => {
@@ -40,9 +40,9 @@ function Ge(C) {
40
40
  }, U = (t, n) => {
41
41
  if (e.range) {
42
42
  if (!n) return;
43
- const [i, h] = l();
43
+ const [l, h] = i();
44
44
  let r;
45
- !i || i && h ? r = [n, void 0] : r = D(i) && n.getTime() < i.getTime() ? [n, i] : [i, n], k() || z(r), e.onRangeChange?.(r), r[0] && r[1] && f(!1);
45
+ !l || l && h ? r = [n, void 0] : r = D(l) && n.getTime() < l.getTime() ? [n, l] : [l, n], k() || z(r), e.onRangeChange?.(r), r[0] && r[1] && f(!1);
46
46
  return;
47
47
  }
48
48
  e.onChange?.(t, n, C), f(!1);
@@ -79,12 +79,12 @@ function Ge(C) {
79
79
  onChange: Q
80
80
  });
81
81
  default:
82
- return a(ve, {
82
+ return a(pe, {
83
83
  get viewValue() {
84
84
  return s();
85
85
  },
86
86
  get value() {
87
- return p();
87
+ return v();
88
88
  },
89
89
  get showDaysOutsideMonth() {
90
90
  return e.showDaysOutsideMonth;
@@ -115,14 +115,14 @@ function Ge(C) {
115
115
  return e.range;
116
116
  },
117
117
  get rangeStart() {
118
- return l()[0];
118
+ return i()[0];
119
119
  },
120
120
  get rangeEnd() {
121
- return l()[1];
121
+ return i()[1];
122
122
  }
123
123
  });
124
124
  }
125
- }, re = () => e.range && (l()[0] || l()[1]) ? `${Y(l()[0], e.format)} – ${Y(l()[1], e.format)}` : "", R = E(e.ref, v.setReference, (t) => O = t);
125
+ }, re = () => e.range && (i()[0] || i()[1]) ? `${Y(i()[0], e.format)} – ${Y(i()[1], e.format)}` : "", R = E(e.ref, p.setReference, (t) => O = t);
126
126
  return [a(b, {
127
127
  get when() {
128
128
  return e.range;
@@ -219,8 +219,8 @@ function Ge(C) {
219
219
  return a(Se, {
220
220
  onClickAway: W,
221
221
  get children() {
222
- var t = Fe(), n = t.firstChild, i = n.firstChild, h = E(v.setFloating, (r) => P = r);
223
- return typeof h == "function" && oe(h, t), x(n, a(pe, {
222
+ var t = Fe(), n = t.firstChild, l = n.firstChild, h = E(p.setFloating, (r) => P = r);
223
+ return typeof h == "function" && oe(h, t), x(n, a(ve, {
224
224
  get viewValue() {
225
225
  return s();
226
226
  },
@@ -233,12 +233,12 @@ function Ge(C) {
233
233
  onChange: G,
234
234
  onMonthLabelClick: J,
235
235
  onYearLabelClick: K
236
- }), i), x(i, te), ie((r) => {
236
+ }), l), x(l, te), le((r) => {
237
237
  var ae = {
238
- ...v.floatingStyles(),
238
+ ...p.floatingStyles(),
239
239
  opacity: ee() ? 1 : 0
240
240
  }, T = e.calendarAriaLabel ?? "Choose date";
241
- return r.e = le(t, ae, r.e), T !== r.t && se(t, "aria-label", r.t = T), r;
241
+ return r.e = ie(t, ae, r.e), T !== r.t && se(t, "aria-label", r.t = T), r;
242
242
  }, {
243
243
  e: void 0,
244
244
  t: void 0
@@ -1 +1 @@
1
- {"version":3,"file":"datePicker.js","sources":["../../../../../src/components/inputs/datePicker/datePicker.tsx"],"sourcesContent":["import { type JSX, Show, createEffect, createMemo, createSignal, onCleanup, splitProps } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport { buildFloatingMiddleware, type Placement, resolvePlacement } from \"../../../utils/floating\";\nimport { createFloating } from \"../../../primitives/createFloating\";\nimport { ClickAwayListener } from \"../../clickAwayListener\";\nimport { TextField, type TextFieldProps } from \"../textField\";\nimport { DataPickerHeader } from \"./dataPickerHeader\";\nimport { DataPickerDays } from \"./dataPickerDays\";\nimport { DatePickerList } from \"./datePickerList\";\nimport { DataPickerInput } from \"./dataPickerInput\";\nimport { DatePickerIconButton } from \"./datePickerIconButton\";\nimport { OpenView } from \"./openView\";\nimport {\n type WeekStart,\n getDisplayDate,\n getMonths,\n getYears,\n isValidDate,\n setMonth,\n setYear,\n} from \"./dateUtils\";\nimport { Icon } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport { OpenView } from \"./openView\";\n\nexport interface DatePickerProps\n extends Omit<TextFieldProps, \"onBlur\" | \"onChange\" | \"value\" | \"defaultValue\" | \"ref\" | \"onToggle\"> {\n showDaysOutsideMonth?: boolean | undefined;\n disablePast?: boolean | undefined;\n disableFuture?: boolean | undefined;\n /** Earliest selectable date (inclusive). */\n minDate?: Date | undefined;\n /** Latest selectable date (inclusive). */\n maxDate?: Date | undefined;\n /** Predicate to disable arbitrary days. */\n isDateDisabled?: ((day: Date) => boolean) | undefined;\n weekStartsOn?: WeekStart | undefined;\n /** BCP-47 locale for calendar labels (day/month/year names). */\n locale?: string | undefined;\n /** Input format pattern with tokens dd, MM, yyyy, e.g. \"dd/MM/yyyy\". */\n format?: string | undefined;\n /** Enables date-range selection. */\n range?: boolean | undefined;\n /** Controlled range value `[start, end]`. */\n rangeValue?: [Date | undefined, Date | undefined] | undefined;\n /** Called when the range changes. */\n onRangeChange?: ((range: [Date | undefined, Date | undefined]) => void) | undefined;\n placement?: Placement | undefined;\n disableCalendar?: boolean | undefined;\n label?: string | undefined;\n /** Accessible label for the calendar popup dialog. */\n calendarAriaLabel?: string | undefined;\n value?: Date | string | undefined;\n calendarIcon?: JSX.Element;\n onChange?: ((event?: Event, value?: Date, data?: DatePickerProps) => void) | undefined;\n onBlur?: ((event?: FocusEvent, value?: Date, data?: DatePickerProps) => void) | undefined;\n ref?: Ref<HTMLInputElement>;\n}\n\nconst FADE_MS = 150;\n\nexport function DatePicker(props: DatePickerProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"value\",\n \"onChange\",\n \"showDaysOutsideMonth\",\n \"disablePast\",\n \"disableFuture\",\n \"weekStartsOn\",\n \"placement\",\n \"disabled\",\n \"disableCalendar\",\n \"calendarAriaLabel\",\n \"minDate\",\n \"maxDate\",\n \"isDateDisabled\",\n \"locale\",\n \"format\",\n \"range\",\n \"rangeValue\",\n \"onRangeChange\",\n \"calendarIcon\",\n \"onBlur\",\n \"ref\",\n ]);\n\n const value = (): Date | undefined => (local.value === undefined ? undefined : new Date(local.value));\n const isRangeControlled = (): boolean => local.rangeValue !== undefined;\n const [rangeState, setRangeState] = createSignal<[Date | undefined, Date | undefined]>([undefined, undefined]);\n const currentRange = (): [Date | undefined, Date | undefined] =>\n isRangeControlled() && local.rangeValue ? local.rangeValue : rangeState();\n\n const initialValue = value();\n const [viewValue, setViewValue] = createSignal<Date>(isValidDate(initialValue) ? initialValue : new Date());\n const [openView, setOpenView] = createSignal<OpenView>(OpenView.days);\n const [isOpen, setIsOpen] = createSignal(false);\n\n let anchorEl: HTMLElement | undefined;\n let calendarEl: HTMLElement | undefined;\n\n const resolved = (): ReturnType<typeof resolvePlacement> => resolvePlacement(local.placement ?? \"bottom-start\");\n const floating = createFloating({\n placement: () => resolved().placement,\n middleware: () => buildFloatingMiddleware(resolved()),\n });\n\n createEffect(() => {\n if (local.disabled) return;\n const v = value();\n setViewValue(isValidDate(v) ? v : new Date());\n });\n\n const weekStartsOn = (): WeekStart => local.weekStartsOn ?? 1;\n\n const onViewValueChange = (v: Date): void => {\n setViewValue(v);\n };\n\n const onMonthLabelClick = (): void => {\n setOpenView(openView() === OpenView.months ? OpenView.days : OpenView.months);\n };\n\n const onYearLabelClick = (): void => {\n setOpenView(openView() === OpenView.years ? OpenView.days : OpenView.years);\n };\n\n const onMonthChange = (month: number): void => {\n setViewValue(setMonth(viewValue(), month));\n setOpenView(OpenView.days);\n };\n\n const onYearChange = (year: number): void => {\n setViewValue(setYear(viewValue(), year));\n setOpenView(OpenView.days);\n };\n\n const onChange = (event?: Event, date?: Date): void => {\n if (local.range) {\n if (!date) return;\n const [start, end] = currentRange();\n let next: [Date | undefined, Date | undefined];\n if (!start || (start && end)) {\n next = [date, undefined];\n } else {\n next = isValidDate(start) && date.getTime() < start.getTime() ? [date, start] : [start, date];\n }\n if (!isRangeControlled()) setRangeState(next);\n local.onRangeChange?.(next);\n if (next[0] && next[1]) setIsOpen(false);\n return;\n }\n local.onChange?.(event, date, props);\n setIsOpen(false);\n };\n\n const onToggle = (): void => {\n if (!local.disabled) setIsOpen((prev) => !prev);\n };\n\n const onClickAway = (event: MouseEvent | TouchEvent): void => {\n const target = event.target as HTMLElement;\n if (calendarEl?.contains(target) || anchorEl?.contains(target)) return;\n setIsOpen(false);\n };\n\n const months = createMemo(() => getMonths(local.locale));\n const years = getYears(new Date().getFullYear(), 100);\n\n const shouldOpen = (): boolean => isOpen() && !local.disabled && !local.disableCalendar;\n const [mounted, setMounted] = createSignal(shouldOpen());\n const [shown, setShown] = createSignal(false);\n let raf: number | undefined;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n createEffect(() => {\n if (shouldOpen()) {\n if (timer !== undefined) clearTimeout(timer);\n setMounted(true);\n raf = requestAnimationFrame(() => setShown(true));\n } else {\n setShown(false);\n if (mounted()) timer = setTimeout(() => setMounted(false), FADE_MS);\n }\n });\n onCleanup(() => {\n if (raf !== undefined) cancelAnimationFrame(raf);\n if (timer !== undefined) clearTimeout(timer);\n });\n\n const view = (): JSX.Element => {\n switch (openView()) {\n case OpenView.months:\n return <DatePickerList value={viewValue().getMonth()} items={months()} onChange={onMonthChange} />;\n case OpenView.years:\n return <DatePickerList value={viewValue().getFullYear()} items={years} onChange={onYearChange} />;\n default:\n return (\n <DataPickerDays\n viewValue={viewValue()}\n value={value()}\n showDaysOutsideMonth={local.showDaysOutsideMonth}\n onChange={onChange}\n disablePast={local.disablePast}\n disableFuture={local.disableFuture}\n weekStartsOn={weekStartsOn()}\n minDate={local.minDate}\n maxDate={local.maxDate}\n isDateDisabled={local.isDateDisabled}\n locale={local.locale}\n range={local.range}\n rangeStart={currentRange()[0]}\n rangeEnd={currentRange()[1]}\n />\n );\n }\n };\n\n const rangeDisplay = (): string =>\n local.range && (currentRange()[0] || currentRange()[1])\n ? `${getDisplayDate(currentRange()[0], local.format)} – ${getDisplayDate(currentRange()[1], local.format)}`\n : \"\";\n\n const anchorRef = mergeRefs(local.ref, floating.setReference, (el) => (anchorEl = el as HTMLElement));\n\n return (\n <>\n <Show\n when={local.range}\n fallback={\n <DataPickerInput\n ref={anchorRef}\n value={local.value}\n onChange={local.onChange}\n onBlur={local.onBlur}\n onToggle={onToggle}\n disabled={local.disabled}\n disableCalendar={local.disableCalendar}\n format={local.format}\n calendarIcon={local.calendarIcon}\n {...rest}\n />\n }\n >\n <TextField\n ref={anchorRef}\n value={rangeDisplay()}\n readOnly\n onChange={() => undefined}\n disabled={Boolean(local.disabled)}\n {...(local.format ? { placeholder: `${local.format} – ${local.format}` } : {})}\n endAdornment={\n <Show when={!local.disableCalendar}>\n <DatePickerIconButton\n edge=\"end\"\n onClick={onToggle}\n disabled={Boolean(local.disabled)}\n data-testid=\"date-picker-icon-button\"\n >\n <Show\n when={local.calendarIcon}\n fallback={<Icon name=\"calendar_today\" fill={1} weight={500} size={24} />}\n >\n {local.calendarIcon}\n </Show>\n </DatePickerIconButton>\n </Show>\n }\n {...rest}\n />\n </Show>\n <Show when={mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <ClickAwayListener onClickAway={onClickAway}>\n <div\n ref={mergeRefs(floating.setFloating, (el) => (calendarEl = el as HTMLElement))}\n class=\"smwb-date-picker\"\n style={{\n ...floating.floatingStyles(),\n transition: `opacity ${FADE_MS}ms ease-in-out`,\n opacity: shown() ? 1 : 0,\n }}\n data-testid=\"date-picker\"\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label={local.calendarAriaLabel ?? \"Choose date\"}\n >\n <div class=\"smwb-date-picker__inner\">\n <DataPickerHeader\n viewValue={viewValue()}\n locale={local.locale}\n openView={openView()}\n onChange={onViewValueChange}\n onMonthLabelClick={onMonthLabelClick}\n onYearLabelClick={onYearLabelClick}\n />\n <div class=\"smwb-date-picker__body\">{view()}</div>\n </div>\n </div>\n </ClickAwayListener>\n </Portal>\n </Show>\n </>\n );\n}\n\nexport default DatePicker;\n"],"names":["FADE_MS","DatePicker","props","local","rest","splitProps","value","undefined","Date","isRangeControlled","rangeValue","rangeState","setRangeState","createSignal","currentRange","initialValue","viewValue","setViewValue","isValidDate","openView","setOpenView","OpenView","days","isOpen","setIsOpen","anchorEl","calendarEl","resolved","resolvePlacement","placement","floating","createFloating","middleware","buildFloatingMiddleware","createEffect","disabled","v","weekStartsOn","onViewValueChange","onMonthLabelClick","months","onYearLabelClick","years","onMonthChange","month","setMonth","onYearChange","year","setYear","onChange","event","date","range","start","end","next","getTime","onRangeChange","onToggle","prev","onClickAway","target","contains","createMemo","getMonths","locale","getYears","getFullYear","shouldOpen","disableCalendar","mounted","setMounted","shown","setShown","raf","timer","clearTimeout","requestAnimationFrame","setTimeout","onCleanup","cancelAnimationFrame","view","_$createComponent","DatePickerList","getMonth","items","DataPickerDays","showDaysOutsideMonth","disablePast","disableFuture","minDate","maxDate","isDateDisabled","rangeStart","rangeEnd","rangeDisplay","getDisplayDate","format","anchorRef","mergeRefs","ref","setReference","el","Show","when","fallback","DataPickerInput","_$mergeProps","onBlur","calendarIcon","children","TextField","readOnly","Boolean","placeholder","endAdornment","DatePickerIconButton","edge","onClick","Icon","name","fill","weight","size","Portal","mount","isServer","document","body","ClickAwayListener","_el$","_tmpl$","_el$2","firstChild","_el$3","_ref$","setFloating","_$use","_$insert","DataPickerHeader","_$effect","_p$","_v$","floatingStyles","opacity","_v$2","calendarAriaLabel","e","_$style","t","_$setAttribute"],"mappings":";;;;;;;;;;;;;;;;AA4DA,MAAMA,KAAU;AAET,SAASC,GAAWC,GAAqC;AAC9D,QAAM,CAACC,GAAOC,CAAI,IAAIC,GAAWH,GAAO,CACtC,SACA,YACA,wBACA,eACA,iBACA,gBACA,aACA,YACA,mBACA,qBACA,WACA,WACA,kBACA,UACA,UACA,SACA,cACA,iBACA,gBACA,UACA,KAAK,CACN,GAEKI,IAAQA,MAAyBH,EAAMG,UAAUC,SAAYA,SAAY,IAAIC,KAAKL,EAAMG,KAAK,GAC7FG,IAAoBA,MAAeN,EAAMO,eAAeH,QACxD,CAACI,GAAYC,CAAa,IAAIC,EAAmD,CAACN,QAAWA,MAAS,CAAC,GACvGO,IAAeA,MACnBL,OAAuBN,EAAMO,aAAaP,EAAMO,aAAaC,EAAAA,GAEzDI,IAAeT,EAAAA,GACf,CAACU,GAAWC,CAAY,IAAIJ,EAAmBK,EAAYH,CAAY,IAAIA,IAAe,oBAAIP,MAAM,GACpG,CAACW,GAAUC,CAAW,IAAIP,EAAuBQ,EAASC,IAAI,GAC9D,CAACC,GAAQC,CAAS,IAAIX,EAAa,EAAK;AAE9C,MAAIY,GACAC;AAEJ,QAAMC,IAAWA,MAA2CC,GAAiBzB,EAAM0B,aAAa,cAAc,GACxGC,IAAWC,GAAe;AAAA,IAC9BF,WAAWA,MAAMF,EAAAA,EAAWE;AAAAA,IAC5BG,YAAYA,MAAMC,GAAwBN,EAAAA,CAAU;AAAA,EAAA,CACrD;AAEDO,EAAAA,EAAa,MAAM;AACjB,QAAI/B,EAAMgC,SAAU;AACpB,UAAMC,IAAI9B,EAAAA;AACVW,IAAAA,EAAaC,EAAYkB,CAAC,IAAIA,IAAI,oBAAI5B,MAAM;AAAA,EAC9C,CAAC;AAED,QAAM6B,IAAeA,MAAiBlC,EAAMkC,gBAAgB,GAEtDC,IAAoBA,CAACF,MAAkB;AAC3CnB,IAAAA,EAAamB,CAAC;AAAA,EAChB,GAEMG,IAAoBA,MAAY;AACpCnB,IAAAA,EAAYD,QAAeE,EAASmB,SAASnB,EAASC,OAAOD,EAASmB,MAAM;AAAA,EAC9E,GAEMC,IAAmBA,MAAY;AACnCrB,IAAAA,EAAYD,QAAeE,EAASqB,QAAQrB,EAASC,OAAOD,EAASqB,KAAK;AAAA,EAC5E,GAEMC,IAAgBA,CAACC,MAAwB;AAC7C3B,IAAAA,EAAa4B,GAAS7B,EAAAA,GAAa4B,CAAK,CAAC,GACzCxB,EAAYC,EAASC,IAAI;AAAA,EAC3B,GAEMwB,IAAeA,CAACC,MAAuB;AAC3C9B,IAAAA,EAAa+B,GAAQhC,EAAAA,GAAa+B,CAAI,CAAC,GACvC3B,EAAYC,EAASC,IAAI;AAAA,EAC3B,GAEM2B,IAAWA,CAACC,GAAeC,MAAsB;AACrD,QAAIhD,EAAMiD,OAAO;AACf,UAAI,CAACD,EAAM;AACX,YAAM,CAACE,GAAOC,CAAG,IAAIxC,EAAAA;AACrB,UAAIyC;AACJ,MAAI,CAACF,KAAUA,KAASC,IACtBC,IAAO,CAACJ,GAAM5C,MAAS,IAEvBgD,IAAOrC,EAAYmC,CAAK,KAAKF,EAAKK,YAAYH,EAAMG,QAAAA,IAAY,CAACL,GAAME,CAAK,IAAI,CAACA,GAAOF,CAAI,GAEzF1C,EAAAA,KAAqBG,EAAc2C,CAAI,GAC5CpD,EAAMsD,gBAAgBF,CAAI,GACtBA,EAAK,CAAC,KAAKA,EAAK,CAAC,OAAa,EAAK;AACvC;AAAA,IACF;AACApD,IAAAA,EAAM8C,WAAWC,GAAOC,GAAMjD,CAAK,GACnCsB,EAAU,EAAK;AAAA,EACjB,GAEMkC,IAAWA,MAAY;AAC3B,IAAKvD,EAAMgC,YAAUX,EAAWmC,CAAAA,MAAS,CAACA,CAAI;AAAA,EAChD,GAEMC,IAAcA,CAACV,MAAyC;AAC5D,UAAMW,IAASX,EAAMW;AACrB,IAAInC,GAAYoC,SAASD,CAAM,KAAKpC,GAAUqC,SAASD,CAAM,KAC7DrC,EAAU,EAAK;AAAA,EACjB,GAEMgB,IAASuB,GAAW,MAAMC,GAAU7D,EAAM8D,MAAM,CAAC,GACjDvB,IAAQwB,IAAS,oBAAI1D,QAAO2D,YAAAA,GAAe,GAAG,GAE9CC,IAAaA,MAAe7C,EAAAA,KAAY,CAACpB,EAAMgC,YAAY,CAAChC,EAAMkE,iBAClE,CAACC,GAASC,CAAU,IAAI1D,EAAauD,GAAY,GACjD,CAACI,IAAOC,CAAQ,IAAI5D,EAAa,EAAK;AAC5C,MAAI6D,GACAC;AAEJzC,EAAAA,EAAa,MAAM;AACjB,IAAIkC,OACEO,MAAUpE,UAAWqE,aAAaD,CAAK,GAC3CJ,EAAW,EAAI,GACfG,IAAMG,sBAAsB,MAAMJ,EAAS,EAAI,CAAC,MAEhDA,EAAS,EAAK,GACVH,EAAAA,MAAWK,IAAQG,WAAW,MAAMP,EAAW,EAAK,GAAGvE,EAAO;AAAA,EAEtE,CAAC,GACD+E,GAAU,MAAM;AACd,IAAIL,MAAQnE,UAAWyE,qBAAqBN,CAAG,GAC3CC,MAAUpE,UAAWqE,aAAaD,CAAK;AAAA,EAC7C,CAAC;AAED,QAAMM,KAAOA,MAAmB;AAC9B,YAAQ9D,KAAS;AAAA,MACf,KAAKE,EAASmB;AACZ,eAAA0C,EAAQC,GAAc;AAAA,UAAA,IAAC7E,QAAK;AAAA,mBAAEU,EAAAA,EAAYoE,SAAAA;AAAAA,UAAU;AAAA,UAAA,IAAEC,QAAK;AAAA,mBAAE7C,EAAAA;AAAAA,UAAQ;AAAA,UAAES,UAAUN;AAAAA,QAAAA,CAAa;AAAA,MAChG,KAAKtB,EAASqB;AACZ,eAAAwC,EAAQC,GAAc;AAAA,UAAA,IAAC7E,QAAK;AAAA,mBAAEU,EAAAA,EAAYmD,YAAAA;AAAAA,UAAa;AAAA,UAAEkB,OAAO3C;AAAAA,UAAOO,UAAUH;AAAAA,QAAAA,CAAY;AAAA,MAC/F;AACE,eAAAoC,EACGI,IAAc;AAAA,UAAA,IACbtE,YAAS;AAAA,mBAAEA,EAAAA;AAAAA,UAAW;AAAA,UAAA,IACtBV,QAAK;AAAA,mBAAEA,EAAAA;AAAAA,UAAO;AAAA,UAAA,IACdiF,uBAAoB;AAAA,mBAAEpF,EAAMoF;AAAAA,UAAoB;AAAA,UAChDtC,UAAAA;AAAAA,UAAkB,IAClBuC,cAAW;AAAA,mBAAErF,EAAMqF;AAAAA,UAAW;AAAA,UAAA,IAC9BC,gBAAa;AAAA,mBAAEtF,EAAMsF;AAAAA,UAAa;AAAA,UAAA,IAClCpD,eAAY;AAAA,mBAAEA,EAAAA;AAAAA,UAAc;AAAA,UAAA,IAC5BqD,UAAO;AAAA,mBAAEvF,EAAMuF;AAAAA,UAAO;AAAA,UAAA,IACtBC,UAAO;AAAA,mBAAExF,EAAMwF;AAAAA,UAAO;AAAA,UAAA,IACtBC,iBAAc;AAAA,mBAAEzF,EAAMyF;AAAAA,UAAc;AAAA,UAAA,IACpC3B,SAAM;AAAA,mBAAE9D,EAAM8D;AAAAA,UAAM;AAAA,UAAA,IACpBb,QAAK;AAAA,mBAAEjD,EAAMiD;AAAAA,UAAK;AAAA,UAAA,IAClByC,aAAU;AAAA,mBAAE/E,EAAAA,EAAe,CAAC;AAAA,UAAC;AAAA,UAAA,IAC7BgF,WAAQ;AAAA,mBAAEhF,EAAAA,EAAe,CAAC;AAAA,UAAC;AAAA,QAAA,CAAA;AAAA,IAAA;AAAA,EAIrC,GAEMiF,KAAeA,MACnB5F,EAAMiD,UAAUtC,EAAAA,EAAe,CAAC,KAAKA,EAAAA,EAAe,CAAC,KACjD,GAAGkF,EAAelF,IAAe,CAAC,GAAGX,EAAM8F,MAAM,CAAC,MAAMD,EAAelF,EAAAA,EAAe,CAAC,GAAGX,EAAM8F,MAAM,CAAC,KACvG,IAEAC,IAAYC,EAAUhG,EAAMiG,KAAKtE,EAASuE,cAAeC,CAAAA,MAAQ7E,IAAW6E,CAAkB;AAEpG,SAAA,CAAApB,EAEKqB,GAAI;AAAA,IAAA,IACHC,OAAI;AAAA,aAAErG,EAAMiD;AAAAA,IAAK;AAAA,IAAA,IACjBqD,WAAQ;AAAA,aAAAvB,EACLwB,IAAeC,EAAA;AAAA,QAAAP,KACTF;AAAAA,QAAS,IACd5F,QAAK;AAAA,iBAAEH,EAAMG;AAAAA,QAAK;AAAA,QAAA,IAClB2C,WAAQ;AAAA,iBAAE9C,EAAM8C;AAAAA,QAAQ;AAAA,QAAA,IACxB2D,SAAM;AAAA,iBAAEzG,EAAMyG;AAAAA,QAAM;AAAA,QACpBlD,UAAAA;AAAAA,QAAkB,IAClBvB,WAAQ;AAAA,iBAAEhC,EAAMgC;AAAAA,QAAQ;AAAA,QAAA,IACxBkC,kBAAe;AAAA,iBAAElE,EAAMkE;AAAAA,QAAe;AAAA,QAAA,IACtC4B,SAAM;AAAA,iBAAE9F,EAAM8F;AAAAA,QAAM;AAAA,QAAA,IACpBY,eAAY;AAAA,iBAAE1G,EAAM0G;AAAAA,QAAY;AAAA,MAAA,GAC5BzG,CAAI,CAAA;AAAA,IAAA;AAAA,IAAA,IAAA0G,WAAA;AAAA,aAAA5B,EAIX6B,IAASJ,EAAA;AAAA,QAAAP,KACHF;AAAAA,QAAS,IACd5F,QAAK;AAAA,iBAAEyF,GAAAA;AAAAA,QAAc;AAAA,QACrBiB,UAAQ;AAAA,QACR/D,UAAUA,MAAAA;AAAAA;AAAAA,QAAe,IACzBd,WAAQ;AAAA,iBAAE8E,EAAQ9G,EAAMgC;AAAAA,QAAS;AAAA,MAAA,GAAA,MAC5BhC,EAAM8F,SAAS;AAAA,QAAEiB,aAAa,GAAG/G,EAAM8F,MAAM,MAAM9F,EAAM8F,MAAM;AAAA,MAAA,IAAO,IAAE;AAAA,QAAA,IAC7EkB,eAAY;AAAA,iBAAAjC,EACTqB,GAAI;AAAA,YAAA,IAACC,OAAI;AAAA,qBAAE,CAACrG,EAAMkE;AAAAA,YAAe;AAAA,YAAA,IAAAyC,WAAA;AAAA,qBAAA5B,EAC/BkC,IAAoB;AAAA,gBACnBC,MAAI;AAAA,gBACJC,SAAS5D;AAAAA,gBAAQ,IACjBvB,WAAQ;AAAA,yBAAE8E,EAAQ9G,EAAMgC;AAAAA,gBAAS;AAAA,gBAAA,eAAA;AAAA,gBAAA,IAAA2E,WAAA;AAAA,yBAAA5B,EAGhCqB,GAAI;AAAA,oBAAA,IACHC,OAAI;AAAA,6BAAErG,EAAM0G;AAAAA,oBAAY;AAAA,oBAAA,IACxBJ,WAAQ;AAAA,6BAAAvB,EAAGqC,IAAI;AAAA,wBAACC,MAAI;AAAA,wBAAkBC,MAAM;AAAA,wBAAGC,QAAQ;AAAA,wBAAKC,MAAM;AAAA,sBAAA,CAAE;AAAA,oBAAA;AAAA,oBAAA,IAAAb,WAAA;AAAA,6BAEnE3G,EAAM0G;AAAAA,oBAAY;AAAA,kBAAA,CAAA;AAAA,gBAAA;AAAA,cAAA,CAAA;AAAA,YAAA;AAAA,UAAA,CAAA;AAAA,QAAA;AAAA,MAAA,GAKvBzG,CAAI,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA,GAAA8E,EAGXqB,GAAI;AAAA,IAAA,IAACC,OAAI;AAAA,aAAElC,EAAAA;AAAAA,IAAS;AAAA,IAAA,IAAAwC,WAAA;AAAA,aAAA5B,EAClB0C,IAAM;AAAA,QAAA,IAACC,QAAK;AAAA,iBAAGC,KAAWvH,SAAYwH,SAASC;AAAAA,QAAa;AAAA,QAAA,IAAAlB,WAAA;AAAA,iBAAA5B,EAC1D+C,IAAiB;AAAA,YAACrE,aAAAA;AAAAA,YAAwB,IAAAkD,WAAA;AAAA,kBAAAoB,IAAAC,GAAAA,GAAAC,IAAAF,EAAAG,YAAAC,IAAAF,EAAAC,YAAAE,IAElCpC,EAAUrE,EAAS0G,aAAclC,CAAAA,MAAQ5E,IAAa4E,CAAkB;AAAC,4BAAAiC,KAAA,cAAAE,GAAAF,GAAAL,CAAA,GAAAQ,EAAAN,GAAAlD,EAa3EyD,IAAgB;AAAA,gBAAA,IACf3H,YAAS;AAAA,yBAAEA,EAAAA;AAAAA,gBAAW;AAAA,gBAAA,IACtBiD,SAAM;AAAA,yBAAE9D,EAAM8D;AAAAA,gBAAM;AAAA,gBAAA,IACpB9C,WAAQ;AAAA,yBAAEA,EAAAA;AAAAA,gBAAU;AAAA,gBACpB8B,UAAUX;AAAAA,gBACVC,mBAAAA;AAAAA,gBACAE,kBAAAA;AAAAA,cAAAA,CAAkC,GAAA6F,CAAA,GAAAI,EAAAJ,GAECrD,EAAI,GAAA2D,GAAAC,CAAAA,MAAA;AAAA,oBAAAC,KAnBpC;AAAA,kBACL,GAAGhH,EAASiH,eAAAA;AAAAA,kBAEZC,SAASxE,GAAAA,IAAU,IAAI;AAAA,gBAAA,GACxByE,IAIW9I,EAAM+I,qBAAqB;AAAaL,uBAAAA,EAAAM,IAAAC,GAAAlB,GAAAY,IAAAD,EAAAM,CAAA,GAAAF,MAAAJ,EAAAQ,KAAAC,GAAApB,GAAA,cAAAW,EAAAQ,IAAAJ,CAAA,GAAAJ;AAAAA,cAAA,GAAA;AAAA,gBAAAM,GAAA5I;AAAAA,gBAAA8I,GAAA9I;AAAAA,cAAAA,CAAA,GAAA2H;AAAAA,YAAA;AAAA,UAAA,CAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA,CAAA;AAmBlE;"}
1
+ {"version":3,"file":"datePicker.js","sources":["../../../../../src/components/inputs/datePicker/datePicker.tsx"],"sourcesContent":["import { type JSX, Show, createEffect, createMemo, createSignal, onCleanup, splitProps } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport { buildFloatingMiddleware, type Placement, resolvePlacement } from \"../../../utils/floating\";\nimport { createFloating } from \"../../../primitives/createFloating\";\nimport { ClickAwayListener } from \"../../clickAwayListener\";\nimport { TextField, type TextFieldProps } from \"../textField\";\nimport { DataPickerHeader } from \"./dataPickerHeader\";\nimport { DataPickerDays } from \"./dataPickerDays\";\nimport { DatePickerList } from \"./datePickerList\";\nimport { DataPickerInput } from \"./dataPickerInput\";\nimport { DatePickerIconButton } from \"./datePickerIconButton\";\nimport { OpenView } from \"./openView\";\nimport {\n type WeekStart,\n getDisplayDate,\n getMonths,\n getYears,\n isValidDate,\n setMonth,\n setYear,\n} from \"./dateUtils\";\nimport { Icon } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport { OpenView } from \"./openView\";\n\nexport interface DatePickerProps\n extends Omit<TextFieldProps, \"onBlur\" | \"onChange\" | \"value\" | \"defaultValue\" | \"ref\" | \"onToggle\"> {\n showDaysOutsideMonth?: boolean | undefined;\n disablePast?: boolean | undefined;\n disableFuture?: boolean | undefined;\n /** Earliest selectable date (inclusive). */\n minDate?: Date | undefined;\n /** Latest selectable date (inclusive). */\n maxDate?: Date | undefined;\n /** Predicate to disable arbitrary days. */\n isDateDisabled?: ((day: Date) => boolean) | undefined;\n weekStartsOn?: WeekStart | undefined;\n /** BCP-47 locale for calendar labels (day/month/year names). */\n locale?: string | undefined;\n /** Input format pattern with tokens dd, MM, yyyy, e.g. \"dd/MM/yyyy\". */\n format?: string | undefined;\n /** Enables date-range selection. */\n range?: boolean | undefined;\n /** Controlled range value `[start, end]`. */\n rangeValue?: [Date | undefined, Date | undefined] | undefined;\n /** Called when the range changes. */\n onRangeChange?: ((range: [Date | undefined, Date | undefined]) => void) | undefined;\n placement?: Placement | undefined;\n disableCalendar?: boolean | undefined;\n label?: string | undefined;\n /** Accessible label for the calendar popup dialog. */\n calendarAriaLabel?: string | undefined;\n value?: Date | string | undefined;\n calendarIcon?: JSX.Element;\n onChange?: ((event?: Event, value?: Date, data?: DatePickerProps) => void) | undefined;\n onBlur?: ((event?: FocusEvent, value?: Date, data?: DatePickerProps) => void) | undefined;\n ref?: Ref<HTMLInputElement>;\n}\n\nconst FADE_MS = 150;\n\nexport function DatePicker(props: DatePickerProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"value\",\n \"onChange\",\n \"showDaysOutsideMonth\",\n \"disablePast\",\n \"disableFuture\",\n \"weekStartsOn\",\n \"placement\",\n \"disabled\",\n \"disableCalendar\",\n \"calendarAriaLabel\",\n \"minDate\",\n \"maxDate\",\n \"isDateDisabled\",\n \"locale\",\n \"format\",\n \"range\",\n \"rangeValue\",\n \"onRangeChange\",\n \"calendarIcon\",\n \"onBlur\",\n \"ref\",\n ]);\n\n const value = (): Date | undefined => (local.value === undefined ? undefined : new Date(local.value));\n const isRangeControlled = (): boolean => local.rangeValue !== undefined;\n const [rangeState, setRangeState] = createSignal<[Date | undefined, Date | undefined]>([undefined, undefined]);\n const currentRange = (): [Date | undefined, Date | undefined] =>\n isRangeControlled() && local.rangeValue ? local.rangeValue : rangeState();\n\n const initialValue = value();\n const [viewValue, setViewValue] = createSignal<Date>(isValidDate(initialValue) ? initialValue : new Date());\n const [openView, setOpenView] = createSignal<OpenView>(OpenView.days);\n const [isOpen, setIsOpen] = createSignal(false);\n\n let anchorEl: HTMLElement | undefined;\n let calendarEl: HTMLElement | undefined;\n\n const resolved = (): ReturnType<typeof resolvePlacement> => resolvePlacement(local.placement ?? \"bottom-start\");\n const floating = createFloating({\n placement: () => resolved().placement,\n middleware: () => buildFloatingMiddleware(resolved()),\n });\n\n createEffect(() => {\n if (local.disabled) return;\n const v = value();\n setViewValue(isValidDate(v) ? v : new Date());\n });\n\n const weekStartsOn = (): WeekStart => local.weekStartsOn ?? 1;\n\n const onViewValueChange = (v: Date): void => {\n setViewValue(v);\n };\n\n const onMonthLabelClick = (): void => {\n setOpenView(openView() === OpenView.months ? OpenView.days : OpenView.months);\n };\n\n const onYearLabelClick = (): void => {\n setOpenView(openView() === OpenView.years ? OpenView.days : OpenView.years);\n };\n\n const onMonthChange = (month: number): void => {\n setViewValue(setMonth(viewValue(), month));\n setOpenView(OpenView.days);\n };\n\n const onYearChange = (year: number): void => {\n setViewValue(setYear(viewValue(), year));\n setOpenView(OpenView.days);\n };\n\n const onChange = (event?: Event, date?: Date): void => {\n if (local.range) {\n if (!date) return;\n const [start, end] = currentRange();\n let next: [Date | undefined, Date | undefined];\n if (!start || (start && end)) {\n next = [date, undefined];\n } else {\n next = isValidDate(start) && date.getTime() < start.getTime() ? [date, start] : [start, date];\n }\n if (!isRangeControlled()) setRangeState(next);\n local.onRangeChange?.(next);\n if (next[0] && next[1]) setIsOpen(false);\n return;\n }\n local.onChange?.(event, date, props);\n setIsOpen(false);\n };\n\n const onToggle = (): void => {\n if (!local.disabled) setIsOpen((prev) => !prev);\n };\n\n const onClickAway = (event: MouseEvent | TouchEvent): void => {\n const target = event.target as HTMLElement;\n if (calendarEl?.contains(target) || anchorEl?.contains(target)) return;\n setIsOpen(false);\n };\n\n const months = createMemo(() => getMonths(local.locale));\n const years = getYears(new Date().getFullYear(), 100);\n\n const shouldOpen = (): boolean => isOpen() && !local.disabled && !local.disableCalendar;\n const [mounted, setMounted] = createSignal(shouldOpen());\n const [shown, setShown] = createSignal(false);\n let raf: number | undefined;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n createEffect(() => {\n if (shouldOpen()) {\n if (timer !== undefined) clearTimeout(timer);\n setMounted(true);\n raf = requestAnimationFrame(() => setShown(true));\n } else {\n setShown(false);\n if (mounted()) timer = setTimeout(() => setMounted(false), FADE_MS);\n }\n });\n onCleanup(() => {\n if (raf !== undefined) cancelAnimationFrame(raf);\n if (timer !== undefined) clearTimeout(timer);\n });\n\n const view = (): JSX.Element => {\n switch (openView()) {\n case OpenView.months:\n return <DatePickerList value={viewValue().getMonth()} items={months()} onChange={onMonthChange} />;\n case OpenView.years:\n return <DatePickerList value={viewValue().getFullYear()} items={years} onChange={onYearChange} />;\n default:\n return (\n <DataPickerDays\n viewValue={viewValue()}\n value={value()}\n showDaysOutsideMonth={local.showDaysOutsideMonth}\n onChange={onChange}\n disablePast={local.disablePast}\n disableFuture={local.disableFuture}\n weekStartsOn={weekStartsOn()}\n minDate={local.minDate}\n maxDate={local.maxDate}\n isDateDisabled={local.isDateDisabled}\n locale={local.locale}\n range={local.range}\n rangeStart={currentRange()[0]}\n rangeEnd={currentRange()[1]}\n />\n );\n }\n };\n\n const rangeDisplay = (): string =>\n local.range && (currentRange()[0] || currentRange()[1])\n ? `${getDisplayDate(currentRange()[0], local.format)} – ${getDisplayDate(currentRange()[1], local.format)}`\n : \"\";\n\n const anchorRef = mergeRefs(local.ref, floating.setReference, (el) => (anchorEl = el as HTMLElement));\n\n return (\n <>\n <Show\n when={local.range}\n fallback={\n <DataPickerInput\n ref={anchorRef}\n value={local.value}\n onChange={local.onChange}\n onBlur={local.onBlur}\n onToggle={onToggle}\n disabled={local.disabled}\n disableCalendar={local.disableCalendar}\n format={local.format}\n calendarIcon={local.calendarIcon}\n {...rest}\n />\n }\n >\n <TextField\n ref={anchorRef}\n value={rangeDisplay()}\n readOnly\n onChange={() => undefined}\n disabled={Boolean(local.disabled)}\n {...(local.format ? { placeholder: `${local.format} – ${local.format}` } : {})}\n endAdornment={\n <Show when={!local.disableCalendar}>\n <DatePickerIconButton\n edge=\"end\"\n onClick={onToggle}\n disabled={Boolean(local.disabled)}\n data-testid=\"date-picker-icon-button\"\n >\n <Show\n when={local.calendarIcon}\n fallback={<Icon name=\"calendar_today\" fill={1} weight={500} size={24} />}\n >\n {local.calendarIcon}\n </Show>\n </DatePickerIconButton>\n </Show>\n }\n {...rest}\n />\n </Show>\n <Show when={mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <ClickAwayListener onClickAway={onClickAway}>\n <div\n ref={mergeRefs(floating.setFloating, (el) => (calendarEl = el as HTMLElement))}\n class=\"smwb-date-picker\"\n style={{\n ...floating.floatingStyles(),\n transition: `opacity ${FADE_MS}ms ease-in-out`,\n opacity: shown() ? 1 : 0,\n }}\n data-testid=\"date-picker\"\n data-smwb-overlay-layer\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label={local.calendarAriaLabel ?? \"Choose date\"}\n >\n <div class=\"smwb-date-picker__inner\">\n <DataPickerHeader\n viewValue={viewValue()}\n locale={local.locale}\n openView={openView()}\n onChange={onViewValueChange}\n onMonthLabelClick={onMonthLabelClick}\n onYearLabelClick={onYearLabelClick}\n />\n <div class=\"smwb-date-picker__body\">{view()}</div>\n </div>\n </div>\n </ClickAwayListener>\n </Portal>\n </Show>\n </>\n );\n}\n\nexport default DatePicker;\n"],"names":["FADE_MS","DatePicker","props","local","rest","splitProps","value","undefined","Date","isRangeControlled","rangeValue","rangeState","setRangeState","createSignal","currentRange","initialValue","viewValue","setViewValue","isValidDate","openView","setOpenView","OpenView","days","isOpen","setIsOpen","anchorEl","calendarEl","resolved","resolvePlacement","placement","floating","createFloating","middleware","buildFloatingMiddleware","createEffect","disabled","v","weekStartsOn","onViewValueChange","onMonthLabelClick","months","onYearLabelClick","years","onMonthChange","month","setMonth","onYearChange","year","setYear","onChange","event","date","range","start","end","next","getTime","onRangeChange","onToggle","prev","onClickAway","target","contains","createMemo","getMonths","locale","getYears","getFullYear","shouldOpen","disableCalendar","mounted","setMounted","shown","setShown","raf","timer","clearTimeout","requestAnimationFrame","setTimeout","onCleanup","cancelAnimationFrame","view","_$createComponent","DatePickerList","getMonth","items","DataPickerDays","showDaysOutsideMonth","disablePast","disableFuture","minDate","maxDate","isDateDisabled","rangeStart","rangeEnd","rangeDisplay","getDisplayDate","format","anchorRef","mergeRefs","ref","setReference","el","Show","when","fallback","DataPickerInput","_$mergeProps","onBlur","calendarIcon","children","TextField","readOnly","Boolean","placeholder","endAdornment","DatePickerIconButton","edge","onClick","Icon","name","fill","weight","size","Portal","mount","isServer","document","body","ClickAwayListener","_el$","_tmpl$","_el$2","firstChild","_el$3","_ref$","setFloating","_$use","_$insert","DataPickerHeader","_$effect","_p$","_v$","floatingStyles","opacity","_v$2","calendarAriaLabel","e","_$style","t","_$setAttribute"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { createComponent as i, mergeProps as ee, Portal as te, use as re, insert as b, effect as ae, style as ne, setAttribute as oe, isServer as ie, template as se } from "solid-js/web";
1
+ import { createComponent as i, mergeProps as ee, Portal as te, use as ae, insert as b, effect as re, style as ne, setAttribute as oe, isServer as ie, template as se } from "solid-js/web";
2
2
  import { splitProps as le, createSignal as u, createEffect as L, createMemo as me, onCleanup as ce, Show as ue } from "solid-js";
3
3
  import { buildFloatingMiddleware as de, resolvePlacement as ge } from "../../../utils/floating.js";
4
4
  import { createFloating as fe } from "../../../primitives/createFloating.js";
@@ -6,16 +6,16 @@ import { DataPickerHeader as he } from "../datePicker/dataPickerHeader.js";
6
6
  import { DataPickerDays as pe } from "../datePicker/dataPickerDays.js";
7
7
  import { DatePickerList as E } from "../datePicker/datePickerList.js";
8
8
  import { isValidDate as w, getMonths as ve, getYears as be, setYear as we, setMonth as De } from "../datePicker/dateUtils.js";
9
- import { OpenView as a } from "../datePicker/openView.js";
9
+ import { OpenView as r } from "../datePicker/openView.js";
10
10
  import { TimePickerColumns as Ce } from "../timePicker/timePickerColumns.js";
11
11
  import { isValidTimeDate as D, mergeTime as ye, DEFAULT_TIME_FORMAT as ke, mergeDate as _e } from "../timePicker/timeUtils.js";
12
12
  import { DateTimePickerInput as Fe } from "./dateTimePickerInput.js";
13
13
  import { mergeRefs as I } from "../../../primitives/mergeRefs.js";
14
14
  import { ClickAwayListener as Me } from "../../clickAwayListener/clickAwayListener.js";
15
- var Te = /* @__PURE__ */ se('<div class="smwb-date-picker smwb-date-time-picker"data-testid=date-time-picker role=dialog aria-modal=false style="transition:opacity 150ms ease-in-out"><div class="smwb-date-picker__inner smwb-date-time-picker__inner"><div class=smwb-date-time-picker__content><div class="smwb-date-picker__body smwb-date-time-picker__body">');
15
+ var Te = /* @__PURE__ */ se('<div class="smwb-date-picker smwb-date-time-picker"data-testid=date-time-picker data-smwb-overlay-layer role=dialog aria-modal=false style="transition:opacity 150ms ease-in-out"><div class="smwb-date-picker__inner smwb-date-time-picker__inner"><div class=smwb-date-time-picker__content><div class="smwb-date-picker__body smwb-date-time-picker__body">');
16
16
  const Ve = 150;
17
17
  function Ue(C) {
18
- const [e, Y] = le(C, ["value", "onChange", "showDaysOutsideMonth", "disablePast", "disableFuture", "weekStartsOn", "placement", "disabled", "disableCalendar", "calendarAriaLabel", "minDate", "maxDate", "isDateDisabled", "locale", "format", "timeFormat", "calendarIcon", "onBlur", "ref"]), l = () => e.value === void 0 ? void 0 : new Date(e.value), f = l(), [o, m] = u(w(f) || D(f) ? f : /* @__PURE__ */ new Date()), [d, g] = u(a.days), [H, y] = u(!1);
18
+ const [e, Y] = le(C, ["value", "onChange", "showDaysOutsideMonth", "disablePast", "disableFuture", "weekStartsOn", "placement", "disabled", "disableCalendar", "calendarAriaLabel", "minDate", "maxDate", "isDateDisabled", "locale", "format", "timeFormat", "calendarIcon", "onBlur", "ref"]), l = () => e.value === void 0 ? void 0 : new Date(e.value), f = l(), [o, m] = u(w(f) || D(f) ? f : /* @__PURE__ */ new Date()), [d, g] = u(r.days), [H, y] = u(!1);
19
19
  let k, _;
20
20
  const F = () => ge(e.placement ?? "bottom-start"), h = fe({
21
21
  placement: () => F().placement,
@@ -29,27 +29,27 @@ function Ue(C) {
29
29
  const $ = () => e.weekStartsOn ?? 1, x = (t) => {
30
30
  m(t);
31
31
  }, B = () => {
32
- g(d() === a.months ? a.days : a.months);
32
+ g(d() === r.months ? r.days : r.months);
33
33
  }, R = () => {
34
- g(d() === a.years ? a.days : a.years);
34
+ g(d() === r.years ? r.days : r.years);
35
35
  }, q = (t) => {
36
- m(De(o(), t)), g(a.days);
36
+ m(De(o(), t)), g(r.days);
37
37
  }, U = (t) => {
38
- m(we(o(), t)), g(a.days);
38
+ m(we(o(), t)), g(r.days);
39
39
  }, M = (t) => {
40
40
  m(t), e.onChange?.(void 0, t, C);
41
- }, j = (t, r) => {
42
- if (!r) return;
41
+ }, j = (t, a) => {
42
+ if (!a) return;
43
43
  const n = l(), v = D(n) ? n : o();
44
- M(_e(r, v));
44
+ M(_e(a, v));
45
45
  }, z = (t) => {
46
- const r = l(), n = w(r) ? r : o();
46
+ const a = l(), n = w(a) ? a : o();
47
47
  M(ye(n, t));
48
48
  }, G = () => {
49
49
  e.disabled || y((t) => !t);
50
50
  }, J = (t) => {
51
- const r = t.target;
52
- _?.contains(r) || k?.contains(r) || y(!1);
51
+ const a = t.target;
52
+ _?.contains(a) || k?.contains(a) || y(!1);
53
53
  }, K = () => e.timeFormat ? e.timeFormat : e.format?.includes("HH:mm:ss") ? "HH:mm:ss" : ke, N = me(() => ve(e.locale)), Q = be((/* @__PURE__ */ new Date()).getFullYear(), 100), T = () => H() && !e.disabled && !e.disableCalendar, [V, O] = u(T()), [W, P] = u(!1);
54
54
  let p, c;
55
55
  L(() => {
@@ -59,7 +59,7 @@ function Ue(C) {
59
59
  });
60
60
  const X = () => {
61
61
  switch (d()) {
62
- case a.months:
62
+ case r.months:
63
63
  return i(E, {
64
64
  get value() {
65
65
  return o().getMonth();
@@ -69,7 +69,7 @@ function Ue(C) {
69
69
  },
70
70
  onChange: q
71
71
  });
72
- case a.years:
72
+ case r.years:
73
73
  return i(E, {
74
74
  get value() {
75
75
  return o().getFullYear();
@@ -115,8 +115,8 @@ function Ue(C) {
115
115
  };
116
116
  return [i(Fe, ee({
117
117
  ref(t) {
118
- var r = I(e.ref, h.setReference, (n) => k = n);
119
- typeof r == "function" && r(t);
118
+ var a = I(e.ref, h.setReference, (n) => k = n);
119
+ typeof a == "function" && a(t);
120
120
  },
121
121
  get value() {
122
122
  return e.value;
@@ -153,8 +153,8 @@ function Ue(C) {
153
153
  return i(Me, {
154
154
  onClickAway: J,
155
155
  get children() {
156
- var t = Te(), r = t.firstChild, n = r.firstChild, v = n.firstChild, S = I(h.setFloating, (s) => _ = s);
157
- return typeof S == "function" && re(S, t), b(r, i(he, {
156
+ var t = Te(), a = t.firstChild, n = a.firstChild, v = n.firstChild, S = I(h.setFloating, (s) => _ = s);
157
+ return typeof S == "function" && ae(S, t), b(a, i(he, {
158
158
  get viewValue() {
159
159
  return o();
160
160
  },
@@ -175,7 +175,7 @@ function Ue(C) {
175
175
  return K();
176
176
  },
177
177
  onChange: z
178
- }), null), ae((s) => {
178
+ }), null), re((s) => {
179
179
  var Z = {
180
180
  ...h.floatingStyles(),
181
181
  opacity: W() ? 1 : 0
@@ -1 +1 @@
1
- {"version":3,"file":"dateTimePicker.js","sources":["../../../../../src/components/inputs/dateTimePicker/dateTimePicker.tsx"],"sourcesContent":["import { type JSX, Show, createEffect, createMemo, createSignal, onCleanup, splitProps } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport { buildFloatingMiddleware, type Placement, resolvePlacement } from \"../../../utils/floating\";\nimport { createFloating } from \"../../../primitives/createFloating\";\nimport { ClickAwayListener } from \"../../clickAwayListener\";\nimport type { TextFieldProps } from \"../textField\";\nimport { DataPickerHeader } from \"../datePicker/dataPickerHeader\";\nimport { DataPickerDays } from \"../datePicker/dataPickerDays\";\nimport { DatePickerList } from \"../datePicker/datePickerList\";\nimport { type WeekStart, getMonths, getYears, isValidDate, setMonth, setYear } from \"../datePicker/dateUtils\";\nimport { OpenView } from \"../datePicker/openView\";\nimport { TimePickerColumns } from \"../timePicker/timePickerColumns\";\nimport { DEFAULT_TIME_FORMAT, isValidTimeDate, mergeDate, mergeTime } from \"../timePicker/timeUtils\";\nimport { DateTimePickerInput } from \"./dateTimePickerInput\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface DateTimePickerProps\n extends Omit<TextFieldProps, \"onBlur\" | \"onChange\" | \"value\" | \"defaultValue\" | \"ref\" | \"onToggle\"> {\n showDaysOutsideMonth?: boolean | undefined;\n disablePast?: boolean | undefined;\n disableFuture?: boolean | undefined;\n minDate?: Date | undefined;\n maxDate?: Date | undefined;\n isDateDisabled?: ((day: Date) => boolean) | undefined;\n weekStartsOn?: WeekStart | undefined;\n locale?: string | undefined;\n /** Input format with tokens dd, MM, yyyy, HH, mm, ss, e.g. \"dd/MM/yyyy HH:mm\". */\n format?: string | undefined;\n /** Time portion format when using the clock columns. Defaults to \"HH:mm\". */\n timeFormat?: string | undefined;\n placement?: Placement | undefined;\n disableCalendar?: boolean | undefined;\n label?: string | undefined;\n calendarAriaLabel?: string | undefined;\n value?: Date | string | undefined;\n calendarIcon?: JSX.Element;\n onChange?: ((event?: Event, value?: Date, data?: DateTimePickerProps) => void) | undefined;\n onBlur?: ((event?: FocusEvent, value?: Date, data?: DateTimePickerProps) => void) | undefined;\n ref?: Ref<HTMLInputElement>;\n}\n\nconst FADE_MS = 150;\n\nexport function DateTimePicker(props: DateTimePickerProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"value\",\n \"onChange\",\n \"showDaysOutsideMonth\",\n \"disablePast\",\n \"disableFuture\",\n \"weekStartsOn\",\n \"placement\",\n \"disabled\",\n \"disableCalendar\",\n \"calendarAriaLabel\",\n \"minDate\",\n \"maxDate\",\n \"isDateDisabled\",\n \"locale\",\n \"format\",\n \"timeFormat\",\n \"calendarIcon\",\n \"onBlur\",\n \"ref\",\n ]);\n\n const value = (): Date | undefined => (local.value === undefined ? undefined : new Date(local.value));\n\n const initialValue = value();\n const [viewValue, setViewValue] = createSignal<Date>(\n isValidDate(initialValue) || isValidTimeDate(initialValue) ? initialValue : new Date()\n );\n const [openView, setOpenView] = createSignal<OpenView>(OpenView.days);\n const [isOpen, setIsOpen] = createSignal(false);\n\n let anchorEl: HTMLElement | undefined;\n let popupEl: HTMLElement | undefined;\n\n const resolved = (): ReturnType<typeof resolvePlacement> => resolvePlacement(local.placement ?? \"bottom-start\");\n const floating = createFloating({\n placement: () => resolved().placement,\n middleware: () => buildFloatingMiddleware(resolved()),\n });\n\n createEffect(() => {\n if (local.disabled) return;\n const v = value();\n setViewValue(isValidDate(v) || isValidTimeDate(v) ? v : new Date());\n });\n\n const weekStartsOn = (): WeekStart => local.weekStartsOn ?? 1;\n\n const onViewValueChange = (next: Date): void => {\n setViewValue(next);\n };\n\n const onMonthLabelClick = (): void => {\n setOpenView(openView() === OpenView.months ? OpenView.days : OpenView.months);\n };\n\n const onYearLabelClick = (): void => {\n setOpenView(openView() === OpenView.years ? OpenView.days : OpenView.years);\n };\n\n const onMonthChange = (month: number): void => {\n setViewValue(setMonth(viewValue(), month));\n setOpenView(OpenView.days);\n };\n\n const onYearChange = (year: number): void => {\n setViewValue(setYear(viewValue(), year));\n setOpenView(OpenView.days);\n };\n\n const emitChange = (next: Date): void => {\n setViewValue(next);\n local.onChange?.(undefined, next, props);\n };\n\n const onDateChange = (_event?: Event, date?: Date): void => {\n if (!date) return;\n const v = value();\n const timeSource = isValidTimeDate(v) ? v : viewValue();\n emitChange(mergeDate(date, timeSource));\n };\n\n const onTimeChange = (timeDate: Date): void => {\n const v = value();\n const dateSource = isValidDate(v) ? v : viewValue();\n emitChange(mergeTime(dateSource, timeDate));\n };\n\n const onToggle = (): void => {\n if (!local.disabled) setIsOpen((prev) => !prev);\n };\n\n const onClickAway = (event: MouseEvent | TouchEvent): void => {\n const target = event.target as HTMLElement;\n if (popupEl?.contains(target) || anchorEl?.contains(target)) return;\n setIsOpen(false);\n };\n\n const resolvedTimeFormat = (): string => {\n if (local.timeFormat) return local.timeFormat;\n if (local.format?.includes(\"HH:mm:ss\")) return \"HH:mm:ss\";\n return DEFAULT_TIME_FORMAT;\n };\n\n const months = createMemo(() => getMonths(local.locale));\n const years = getYears(new Date().getFullYear(), 100);\n\n const shouldOpen = (): boolean => isOpen() && !local.disabled && !local.disableCalendar;\n const [mounted, setMounted] = createSignal(shouldOpen());\n const [shown, setShown] = createSignal(false);\n let raf: number | undefined;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n createEffect(() => {\n if (shouldOpen()) {\n if (timer !== undefined) clearTimeout(timer);\n setMounted(true);\n raf = requestAnimationFrame(() => setShown(true));\n } else {\n setShown(false);\n if (mounted()) timer = setTimeout(() => setMounted(false), FADE_MS);\n }\n });\n onCleanup(() => {\n if (raf !== undefined) cancelAnimationFrame(raf);\n if (timer !== undefined) clearTimeout(timer);\n });\n\n const view = (): JSX.Element => {\n switch (openView()) {\n case OpenView.months:\n return <DatePickerList value={viewValue().getMonth()} items={months()} onChange={onMonthChange} />;\n case OpenView.years:\n return <DatePickerList value={viewValue().getFullYear()} items={years} onChange={onYearChange} />;\n default:\n return (\n <DataPickerDays\n viewValue={viewValue()}\n value={value()}\n showDaysOutsideMonth={local.showDaysOutsideMonth}\n onChange={onDateChange}\n disablePast={local.disablePast}\n disableFuture={local.disableFuture}\n weekStartsOn={weekStartsOn()}\n minDate={local.minDate}\n maxDate={local.maxDate}\n isDateDisabled={local.isDateDisabled}\n locale={local.locale}\n />\n );\n }\n };\n\n return (\n <>\n <DateTimePickerInput\n ref={mergeRefs(local.ref, floating.setReference, (el) => (anchorEl = el as HTMLElement))}\n value={local.value}\n onChange={local.onChange}\n onBlur={local.onBlur}\n onToggle={onToggle}\n disabled={local.disabled}\n disableCalendar={local.disableCalendar}\n format={local.format}\n calendarIcon={local.calendarIcon}\n {...rest}\n />\n <Show when={mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <ClickAwayListener onClickAway={onClickAway}>\n <div\n ref={mergeRefs(floating.setFloating, (el) => (popupEl = el as HTMLElement))}\n class=\"smwb-date-picker smwb-date-time-picker\"\n style={{\n ...floating.floatingStyles(),\n transition: `opacity ${FADE_MS}ms ease-in-out`,\n opacity: shown() ? 1 : 0,\n }}\n data-testid=\"date-time-picker\"\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label={local.calendarAriaLabel ?? \"Choose date and time\"}\n >\n <div class=\"smwb-date-picker__inner smwb-date-time-picker__inner\">\n <DataPickerHeader\n viewValue={viewValue()}\n locale={local.locale}\n openView={openView()}\n onChange={onViewValueChange}\n onMonthLabelClick={onMonthLabelClick}\n onYearLabelClick={onYearLabelClick}\n />\n <div class=\"smwb-date-time-picker__content\">\n <div class=\"smwb-date-picker__body smwb-date-time-picker__body\">{view()}</div>\n <TimePickerColumns value={viewValue()} format={resolvedTimeFormat()} onChange={onTimeChange} />\n </div>\n </div>\n </div>\n </ClickAwayListener>\n </Portal>\n </Show>\n </>\n );\n}\n\nexport default DateTimePicker;\n"],"names":["FADE_MS","DateTimePicker","props","local","rest","splitProps","value","undefined","Date","initialValue","viewValue","setViewValue","createSignal","isValidDate","isValidTimeDate","openView","setOpenView","OpenView","days","isOpen","setIsOpen","anchorEl","popupEl","resolved","resolvePlacement","placement","floating","createFloating","middleware","buildFloatingMiddleware","createEffect","disabled","v","weekStartsOn","onViewValueChange","next","onMonthLabelClick","months","onYearLabelClick","years","onMonthChange","month","setMonth","onYearChange","year","setYear","emitChange","onChange","onDateChange","_event","date","timeSource","mergeDate","onTimeChange","timeDate","dateSource","mergeTime","onToggle","prev","onClickAway","event","target","contains","resolvedTimeFormat","timeFormat","format","includes","DEFAULT_TIME_FORMAT","createMemo","getMonths","locale","getYears","getFullYear","shouldOpen","disableCalendar","mounted","setMounted","shown","setShown","raf","timer","clearTimeout","requestAnimationFrame","setTimeout","onCleanup","cancelAnimationFrame","view","_$createComponent","DatePickerList","getMonth","items","DataPickerDays","showDaysOutsideMonth","disablePast","disableFuture","minDate","maxDate","isDateDisabled","DateTimePickerInput","_$mergeProps","ref","r$","_ref$","mergeRefs","setReference","el","onBlur","calendarIcon","Show","when","children","Portal","mount","isServer","document","body","ClickAwayListener","_el$","_tmpl$","_el$2","firstChild","_el$3","_el$4","_ref$2","setFloating","_$use","_$insert","DataPickerHeader","TimePickerColumns","_$effect","_p$","_v$","floatingStyles","opacity","_v$2","calendarAriaLabel","e","_$style","t","_$setAttribute"],"mappings":"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"}
1
+ {"version":3,"file":"dateTimePicker.js","sources":["../../../../../src/components/inputs/dateTimePicker/dateTimePicker.tsx"],"sourcesContent":["import { type JSX, Show, createEffect, createMemo, createSignal, onCleanup, splitProps } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport { buildFloatingMiddleware, type Placement, resolvePlacement } from \"../../../utils/floating\";\nimport { createFloating } from \"../../../primitives/createFloating\";\nimport { ClickAwayListener } from \"../../clickAwayListener\";\nimport type { TextFieldProps } from \"../textField\";\nimport { DataPickerHeader } from \"../datePicker/dataPickerHeader\";\nimport { DataPickerDays } from \"../datePicker/dataPickerDays\";\nimport { DatePickerList } from \"../datePicker/datePickerList\";\nimport { type WeekStart, getMonths, getYears, isValidDate, setMonth, setYear } from \"../datePicker/dateUtils\";\nimport { OpenView } from \"../datePicker/openView\";\nimport { TimePickerColumns } from \"../timePicker/timePickerColumns\";\nimport { DEFAULT_TIME_FORMAT, isValidTimeDate, mergeDate, mergeTime } from \"../timePicker/timeUtils\";\nimport { DateTimePickerInput } from \"./dateTimePickerInput\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface DateTimePickerProps\n extends Omit<TextFieldProps, \"onBlur\" | \"onChange\" | \"value\" | \"defaultValue\" | \"ref\" | \"onToggle\"> {\n showDaysOutsideMonth?: boolean | undefined;\n disablePast?: boolean | undefined;\n disableFuture?: boolean | undefined;\n minDate?: Date | undefined;\n maxDate?: Date | undefined;\n isDateDisabled?: ((day: Date) => boolean) | undefined;\n weekStartsOn?: WeekStart | undefined;\n locale?: string | undefined;\n /** Input format with tokens dd, MM, yyyy, HH, mm, ss, e.g. \"dd/MM/yyyy HH:mm\". */\n format?: string | undefined;\n /** Time portion format when using the clock columns. Defaults to \"HH:mm\". */\n timeFormat?: string | undefined;\n placement?: Placement | undefined;\n disableCalendar?: boolean | undefined;\n label?: string | undefined;\n calendarAriaLabel?: string | undefined;\n value?: Date | string | undefined;\n calendarIcon?: JSX.Element;\n onChange?: ((event?: Event, value?: Date, data?: DateTimePickerProps) => void) | undefined;\n onBlur?: ((event?: FocusEvent, value?: Date, data?: DateTimePickerProps) => void) | undefined;\n ref?: Ref<HTMLInputElement>;\n}\n\nconst FADE_MS = 150;\n\nexport function DateTimePicker(props: DateTimePickerProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"value\",\n \"onChange\",\n \"showDaysOutsideMonth\",\n \"disablePast\",\n \"disableFuture\",\n \"weekStartsOn\",\n \"placement\",\n \"disabled\",\n \"disableCalendar\",\n \"calendarAriaLabel\",\n \"minDate\",\n \"maxDate\",\n \"isDateDisabled\",\n \"locale\",\n \"format\",\n \"timeFormat\",\n \"calendarIcon\",\n \"onBlur\",\n \"ref\",\n ]);\n\n const value = (): Date | undefined => (local.value === undefined ? undefined : new Date(local.value));\n\n const initialValue = value();\n const [viewValue, setViewValue] = createSignal<Date>(\n isValidDate(initialValue) || isValidTimeDate(initialValue) ? initialValue : new Date()\n );\n const [openView, setOpenView] = createSignal<OpenView>(OpenView.days);\n const [isOpen, setIsOpen] = createSignal(false);\n\n let anchorEl: HTMLElement | undefined;\n let popupEl: HTMLElement | undefined;\n\n const resolved = (): ReturnType<typeof resolvePlacement> => resolvePlacement(local.placement ?? \"bottom-start\");\n const floating = createFloating({\n placement: () => resolved().placement,\n middleware: () => buildFloatingMiddleware(resolved()),\n });\n\n createEffect(() => {\n if (local.disabled) return;\n const v = value();\n setViewValue(isValidDate(v) || isValidTimeDate(v) ? v : new Date());\n });\n\n const weekStartsOn = (): WeekStart => local.weekStartsOn ?? 1;\n\n const onViewValueChange = (next: Date): void => {\n setViewValue(next);\n };\n\n const onMonthLabelClick = (): void => {\n setOpenView(openView() === OpenView.months ? OpenView.days : OpenView.months);\n };\n\n const onYearLabelClick = (): void => {\n setOpenView(openView() === OpenView.years ? OpenView.days : OpenView.years);\n };\n\n const onMonthChange = (month: number): void => {\n setViewValue(setMonth(viewValue(), month));\n setOpenView(OpenView.days);\n };\n\n const onYearChange = (year: number): void => {\n setViewValue(setYear(viewValue(), year));\n setOpenView(OpenView.days);\n };\n\n const emitChange = (next: Date): void => {\n setViewValue(next);\n local.onChange?.(undefined, next, props);\n };\n\n const onDateChange = (_event?: Event, date?: Date): void => {\n if (!date) return;\n const v = value();\n const timeSource = isValidTimeDate(v) ? v : viewValue();\n emitChange(mergeDate(date, timeSource));\n };\n\n const onTimeChange = (timeDate: Date): void => {\n const v = value();\n const dateSource = isValidDate(v) ? v : viewValue();\n emitChange(mergeTime(dateSource, timeDate));\n };\n\n const onToggle = (): void => {\n if (!local.disabled) setIsOpen((prev) => !prev);\n };\n\n const onClickAway = (event: MouseEvent | TouchEvent): void => {\n const target = event.target as HTMLElement;\n if (popupEl?.contains(target) || anchorEl?.contains(target)) return;\n setIsOpen(false);\n };\n\n const resolvedTimeFormat = (): string => {\n if (local.timeFormat) return local.timeFormat;\n if (local.format?.includes(\"HH:mm:ss\")) return \"HH:mm:ss\";\n return DEFAULT_TIME_FORMAT;\n };\n\n const months = createMemo(() => getMonths(local.locale));\n const years = getYears(new Date().getFullYear(), 100);\n\n const shouldOpen = (): boolean => isOpen() && !local.disabled && !local.disableCalendar;\n const [mounted, setMounted] = createSignal(shouldOpen());\n const [shown, setShown] = createSignal(false);\n let raf: number | undefined;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n createEffect(() => {\n if (shouldOpen()) {\n if (timer !== undefined) clearTimeout(timer);\n setMounted(true);\n raf = requestAnimationFrame(() => setShown(true));\n } else {\n setShown(false);\n if (mounted()) timer = setTimeout(() => setMounted(false), FADE_MS);\n }\n });\n onCleanup(() => {\n if (raf !== undefined) cancelAnimationFrame(raf);\n if (timer !== undefined) clearTimeout(timer);\n });\n\n const view = (): JSX.Element => {\n switch (openView()) {\n case OpenView.months:\n return <DatePickerList value={viewValue().getMonth()} items={months()} onChange={onMonthChange} />;\n case OpenView.years:\n return <DatePickerList value={viewValue().getFullYear()} items={years} onChange={onYearChange} />;\n default:\n return (\n <DataPickerDays\n viewValue={viewValue()}\n value={value()}\n showDaysOutsideMonth={local.showDaysOutsideMonth}\n onChange={onDateChange}\n disablePast={local.disablePast}\n disableFuture={local.disableFuture}\n weekStartsOn={weekStartsOn()}\n minDate={local.minDate}\n maxDate={local.maxDate}\n isDateDisabled={local.isDateDisabled}\n locale={local.locale}\n />\n );\n }\n };\n\n return (\n <>\n <DateTimePickerInput\n ref={mergeRefs(local.ref, floating.setReference, (el) => (anchorEl = el as HTMLElement))}\n value={local.value}\n onChange={local.onChange}\n onBlur={local.onBlur}\n onToggle={onToggle}\n disabled={local.disabled}\n disableCalendar={local.disableCalendar}\n format={local.format}\n calendarIcon={local.calendarIcon}\n {...rest}\n />\n <Show when={mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <ClickAwayListener onClickAway={onClickAway}>\n <div\n ref={mergeRefs(floating.setFloating, (el) => (popupEl = el as HTMLElement))}\n class=\"smwb-date-picker smwb-date-time-picker\"\n style={{\n ...floating.floatingStyles(),\n transition: `opacity ${FADE_MS}ms ease-in-out`,\n opacity: shown() ? 1 : 0,\n }}\n data-testid=\"date-time-picker\"\n data-smwb-overlay-layer\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label={local.calendarAriaLabel ?? \"Choose date and time\"}\n >\n <div class=\"smwb-date-picker__inner smwb-date-time-picker__inner\">\n <DataPickerHeader\n viewValue={viewValue()}\n locale={local.locale}\n openView={openView()}\n onChange={onViewValueChange}\n onMonthLabelClick={onMonthLabelClick}\n onYearLabelClick={onYearLabelClick}\n />\n <div class=\"smwb-date-time-picker__content\">\n <div class=\"smwb-date-picker__body smwb-date-time-picker__body\">{view()}</div>\n <TimePickerColumns value={viewValue()} format={resolvedTimeFormat()} onChange={onTimeChange} />\n </div>\n </div>\n </div>\n </ClickAwayListener>\n </Portal>\n </Show>\n </>\n );\n}\n\nexport default DateTimePicker;\n"],"names":["FADE_MS","DateTimePicker","props","local","rest","splitProps","value","undefined","Date","initialValue","viewValue","setViewValue","createSignal","isValidDate","isValidTimeDate","openView","setOpenView","OpenView","days","isOpen","setIsOpen","anchorEl","popupEl","resolved","resolvePlacement","placement","floating","createFloating","middleware","buildFloatingMiddleware","createEffect","disabled","v","weekStartsOn","onViewValueChange","next","onMonthLabelClick","months","onYearLabelClick","years","onMonthChange","month","setMonth","onYearChange","year","setYear","emitChange","onChange","onDateChange","_event","date","timeSource","mergeDate","onTimeChange","timeDate","dateSource","mergeTime","onToggle","prev","onClickAway","event","target","contains","resolvedTimeFormat","timeFormat","format","includes","DEFAULT_TIME_FORMAT","createMemo","getMonths","locale","getYears","getFullYear","shouldOpen","disableCalendar","mounted","setMounted","shown","setShown","raf","timer","clearTimeout","requestAnimationFrame","setTimeout","onCleanup","cancelAnimationFrame","view","_$createComponent","DatePickerList","getMonth","items","DataPickerDays","showDaysOutsideMonth","disablePast","disableFuture","minDate","maxDate","isDateDisabled","DateTimePickerInput","_$mergeProps","ref","r$","_ref$","mergeRefs","setReference","el","onBlur","calendarIcon","Show","when","children","Portal","mount","isServer","document","body","ClickAwayListener","_el$","_tmpl$","_el$2","firstChild","_el$3","_el$4","_ref$2","setFloating","_$use","_$insert","DataPickerHeader","TimePickerColumns","_$effect","_p$","_v$","floatingStyles","opacity","_v$2","calendarAriaLabel","e","_$style","t","_$setAttribute"],"mappings":"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"}
@@ -93,6 +93,7 @@ function te(t) {
93
93
  get style() {
94
94
  return H();
95
95
  },
96
+ "data-smwb-overlay-layer": !0,
96
97
  get children() {
97
98
  return [r(l, {
98
99
  get when() {
@@ -1 +1 @@
1
- {"version":3,"file":"dropdownMenu.js","sources":["../../../../../src/components/inputs/selectField/dropdownMenu.tsx"],"sourcesContent":["import { type Accessor, type JSX, For, Show, createEffect, createSignal, onCleanup } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport type { Middleware } from \"@floating-ui/dom\";\nimport { Menu, MenuDivider, MenuItem } from \"../../navigation/menu\";\nimport { TextField } from \"../textField\";\nimport { ProgressIndicator } from \"../../feedBack/progressIndicator\";\nimport { createVirtualList } from \"../../../primitives/createVirtualList\";\n\nexport interface DropdownItem {\n key?: string | number;\n text: string;\n value: string | number | undefined | null;\n helperText?: string;\n disabled?: boolean;\n /** Optional group label; consecutive items sharing it get a group header. */\n group?: string;\n}\n\ntype SearchEvent = Event & { currentTarget: HTMLInputElement };\ntype ItemEvent = Event & { currentTarget: Element; target: Element };\n\nexport interface DropdownItemProps {\n menuMaxHeight?: number | undefined;\n menuMiddleware?: Middleware[] | undefined;\n menuNoItemsMessage?: JSX.Element;\n search?: boolean | undefined;\n onSearchInputChange?: ((event: SearchEvent) => void) | undefined;\n items: DropdownItem[];\n searchValue?: string | number | undefined;\n isOpen: boolean;\n onClose: () => void;\n anchorElement: Accessor<HTMLElement | null>;\n value?: undefined | null | string | number | (undefined | null | string | number)[];\n onItemClick: (event: ItemEvent, item: DropdownItem) => void;\n isLoading?: boolean | undefined;\n optionRenderer?: ((args: import(\"../../navigation/menu\").MenuItemProps) => JSX.Element) | undefined;\n container?: HTMLElement | undefined;\n createOption?: { text: JSX.Element; onCreate: (event: ItemEvent) => void } | undefined;\n virtualized?: boolean | undefined;\n itemHeight?: number | undefined;\n}\n\ntype Row = { kind: \"group\"; group?: string | undefined } | { kind: \"item\"; item: DropdownItem };\n\nexport function DropdownMenu(props: DropdownItemProps): JSX.Element {\n const valueArray = (): Array<string | number | undefined | null> =>\n Array.isArray(props.value) ? props.value : [props.value];\n const hasGroups = (): boolean => props.items.some((i) => !!i.group);\n const itemHeight = (): number => props.itemHeight ?? 40;\n const viewportHeight = (): number => props.menuMaxHeight || 240;\n const useVirtual = (): boolean => !!props.virtualized && !hasGroups() && !props.isLoading && props.items.length > 0;\n\n const virtual = createVirtualList({\n itemCount: () => (useVirtual() ? props.items.length : 0),\n itemHeight,\n viewportHeight,\n });\n\n const [menuMinWidth, setMenuMinWidth] = createSignal<number>();\n\n createEffect(() => {\n const anchor = props.anchorElement();\n if (props.isOpen && anchor) setMenuMinWidth(anchor.clientWidth);\n });\n\n createEffect(() => {\n if (!props.isOpen) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\") props.onClose();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n const toRows = (list: DropdownItem[]): Row[] => {\n const out: Row[] = [];\n let lastGroup: string | undefined;\n for (const el of list) {\n if (hasGroups() && el.group !== lastGroup) {\n lastGroup = el.group;\n out.push({ kind: \"group\", group: el.group });\n }\n out.push({ kind: \"item\", item: el });\n }\n return out;\n };\n\n const renderItem = (el: DropdownItem): JSX.Element => (\n <MenuItem\n value={el.value}\n disabled={el.disabled}\n selected={!!valueArray().find((v) => v === el.value)}\n onClick={(e) => {\n if (!el.disabled) props.onItemClick(e as ItemEvent, el);\n }}\n optionRenderer={props.optionRenderer}\n >\n {el.text}\n <Show when={el.helperText}>\n <span class=\"smwb-select-field__option__helper-text\">{el.helperText}</span>\n </Show>\n </MenuItem>\n );\n\n const renderRow = (row: Row): JSX.Element =>\n row.kind === \"group\" ? (\n <li class=\"smwb-select-field__group-label\" role=\"presentation\">\n {row.group}\n </li>\n ) : (\n renderItem(row.item)\n );\n\n const menuStyle = (): JSX.CSSProperties => ({\n ...(menuMinWidth() ? { \"min-width\": `${menuMinWidth()}px` } : {}),\n ...(props.menuMaxHeight ? { \"max-height\": `${props.menuMaxHeight}px`, \"overflow-y\": \"auto\" } : {}),\n });\n\n return (\n <Portal mount={(isServer ? undefined : (props.container ?? document.body)) as Node}>\n <Menu\n isOpen={props.isOpen}\n onClose={() => props.onClose()}\n anchorElement={props.anchorElement()}\n middleware={props.menuMiddleware}\n style={menuStyle()}\n >\n <Show when={props.search}>\n <li class=\"smwb-select-field__menu-search\">\n <TextField\n class=\"smwb-select-field__menu-search-input\"\n type=\"text\"\n placeholder=\"Найти...\"\n value={props.searchValue}\n onChange={(e) => props.onSearchInputChange?.(e as SearchEvent)}\n fullWidth\n />\n </li>\n <MenuDivider />\n </Show>\n\n <Show when={props.isLoading}>\n <div class=\"smwb-select-field__menu-loading\">\n <ProgressIndicator type=\"indeterminate\" variant=\"circular\" class=\"smwb-select-field__menu__loader\" />\n </div>\n </Show>\n\n <Show when={!props.isLoading}>\n <Show\n when={useVirtual()}\n fallback={\n <Show\n when={props.items.length > 0}\n fallback={\n <Show when={!props.createOption}>\n <li class=\"smwb-select-field__empty-items\">{props.menuNoItemsMessage || \"Опций не найдено.\"}</li>\n </Show>\n }\n >\n <For each={toRows(props.items)}>{(row) => renderRow(row)}</For>\n </Show>\n }\n >\n <li role=\"presentation\" class=\"smwb-select-field__virtual-viewport\">\n <div\n class=\"smwb-select-field__virtual-scroller\"\n style={{ \"max-height\": `${viewportHeight()}px`, \"overflow-y\": \"auto\" }}\n onScroll={virtual.onScroll}\n >\n <div style={{ height: `${virtual.totalHeight()}px`, position: \"relative\" }}>\n <ul\n role=\"presentation\"\n class=\"smwb-select-field__virtual-list\"\n style={{ transform: `translateY(${virtual.offsetY()}px)`, \"list-style\": \"none\", margin: \"0\", padding: \"0\" }}\n >\n <For each={props.items.slice(virtual.startIndex(), virtual.endIndex())}>{(el) => renderItem(el)}</For>\n </ul>\n </div>\n </div>\n </li>\n </Show>\n </Show>\n\n <Show when={props.createOption}>\n {(createOption) => (\n <MenuItem\n value=\"__create__\"\n onClick={(e) => createOption().onCreate(e as ItemEvent)}\n class=\"smwb-select-field__create-option\"\n >\n {createOption().text}\n </MenuItem>\n )}\n </Show>\n </Menu>\n </Portal>\n );\n}\n\nexport default DropdownMenu;\n"],"names":["DropdownMenu","props","valueArray","Array","isArray","value","hasGroups","items","some","i","group","itemHeight","viewportHeight","menuMaxHeight","useVirtual","virtualized","isLoading","length","virtual","createVirtualList","itemCount","menuMinWidth","setMenuMinWidth","createSignal","createEffect","anchor","anchorElement","isOpen","clientWidth","onKeyDown","event","key","onClose","document","addEventListener","onCleanup","removeEventListener","toRows","list","out","lastGroup","el","push","kind","item","renderItem","_$createComponent","MenuItem","disabled","selected","find","v","onClick","e","onItemClick","optionRenderer","children","_$memo","text","Show","when","helperText","_el$","_tmpl$","_$insert","renderRow","row","_el$2","_tmpl$2","menuStyle","Portal","mount","isServer","undefined","container","body","Menu","middleware","menuMiddleware","style","search","_el$3","_tmpl$3","TextField","type","placeholder","searchValue","onChange","onSearchInputChange","fullWidth","MenuDivider","_el$4","_tmpl$4","ProgressIndicator","variant","fallback","createOption","_el$9","_tmpl$6","menuNoItemsMessage","For","each","_el$5","_tmpl$5","_el$6","firstChild","_el$7","_el$8","_$addEventListener","onScroll","slice","startIndex","endIndex","_$effect","_p$","_v$","_v$2","totalHeight","_v$3","offsetY","_$setStyleProperty","t","a","onCreate"],"mappings":"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"}
1
+ {"version":3,"file":"dropdownMenu.js","sources":["../../../../../src/components/inputs/selectField/dropdownMenu.tsx"],"sourcesContent":["import { type Accessor, type JSX, For, Show, createEffect, createSignal, onCleanup } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport type { Middleware } from \"@floating-ui/dom\";\nimport { Menu, MenuDivider, MenuItem } from \"../../navigation/menu\";\nimport { TextField } from \"../textField\";\nimport { ProgressIndicator } from \"../../feedBack/progressIndicator\";\nimport { createVirtualList } from \"../../../primitives/createVirtualList\";\n\nexport interface DropdownItem {\n key?: string | number;\n text: string;\n value: string | number | undefined | null;\n helperText?: string;\n disabled?: boolean;\n /** Optional group label; consecutive items sharing it get a group header. */\n group?: string;\n}\n\ntype SearchEvent = Event & { currentTarget: HTMLInputElement };\ntype ItemEvent = Event & { currentTarget: Element; target: Element };\n\nexport interface DropdownItemProps {\n menuMaxHeight?: number | undefined;\n menuMiddleware?: Middleware[] | undefined;\n menuNoItemsMessage?: JSX.Element;\n search?: boolean | undefined;\n onSearchInputChange?: ((event: SearchEvent) => void) | undefined;\n items: DropdownItem[];\n searchValue?: string | number | undefined;\n isOpen: boolean;\n onClose: () => void;\n anchorElement: Accessor<HTMLElement | null>;\n value?: undefined | null | string | number | (undefined | null | string | number)[];\n onItemClick: (event: ItemEvent, item: DropdownItem) => void;\n isLoading?: boolean | undefined;\n optionRenderer?: ((args: import(\"../../navigation/menu\").MenuItemProps) => JSX.Element) | undefined;\n container?: HTMLElement | undefined;\n createOption?: { text: JSX.Element; onCreate: (event: ItemEvent) => void } | undefined;\n virtualized?: boolean | undefined;\n itemHeight?: number | undefined;\n}\n\ntype Row = { kind: \"group\"; group?: string | undefined } | { kind: \"item\"; item: DropdownItem };\n\nexport function DropdownMenu(props: DropdownItemProps): JSX.Element {\n const valueArray = (): Array<string | number | undefined | null> =>\n Array.isArray(props.value) ? props.value : [props.value];\n const hasGroups = (): boolean => props.items.some((i) => !!i.group);\n const itemHeight = (): number => props.itemHeight ?? 40;\n const viewportHeight = (): number => props.menuMaxHeight || 240;\n const useVirtual = (): boolean => !!props.virtualized && !hasGroups() && !props.isLoading && props.items.length > 0;\n\n const virtual = createVirtualList({\n itemCount: () => (useVirtual() ? props.items.length : 0),\n itemHeight,\n viewportHeight,\n });\n\n const [menuMinWidth, setMenuMinWidth] = createSignal<number>();\n\n createEffect(() => {\n const anchor = props.anchorElement();\n if (props.isOpen && anchor) setMenuMinWidth(anchor.clientWidth);\n });\n\n createEffect(() => {\n if (!props.isOpen) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\") props.onClose();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n const toRows = (list: DropdownItem[]): Row[] => {\n const out: Row[] = [];\n let lastGroup: string | undefined;\n for (const el of list) {\n if (hasGroups() && el.group !== lastGroup) {\n lastGroup = el.group;\n out.push({ kind: \"group\", group: el.group });\n }\n out.push({ kind: \"item\", item: el });\n }\n return out;\n };\n\n const renderItem = (el: DropdownItem): JSX.Element => (\n <MenuItem\n value={el.value}\n disabled={el.disabled}\n selected={!!valueArray().find((v) => v === el.value)}\n onClick={(e) => {\n if (!el.disabled) props.onItemClick(e as ItemEvent, el);\n }}\n optionRenderer={props.optionRenderer}\n >\n {el.text}\n <Show when={el.helperText}>\n <span class=\"smwb-select-field__option__helper-text\">{el.helperText}</span>\n </Show>\n </MenuItem>\n );\n\n const renderRow = (row: Row): JSX.Element =>\n row.kind === \"group\" ? (\n <li class=\"smwb-select-field__group-label\" role=\"presentation\">\n {row.group}\n </li>\n ) : (\n renderItem(row.item)\n );\n\n const menuStyle = (): JSX.CSSProperties => ({\n ...(menuMinWidth() ? { \"min-width\": `${menuMinWidth()}px` } : {}),\n ...(props.menuMaxHeight ? { \"max-height\": `${props.menuMaxHeight}px`, \"overflow-y\": \"auto\" } : {}),\n });\n\n return (\n <Portal mount={(isServer ? undefined : (props.container ?? document.body)) as Node}>\n <Menu\n isOpen={props.isOpen}\n onClose={() => props.onClose()}\n anchorElement={props.anchorElement()}\n middleware={props.menuMiddleware}\n style={menuStyle()}\n data-smwb-overlay-layer\n >\n <Show when={props.search}>\n <li class=\"smwb-select-field__menu-search\">\n <TextField\n class=\"smwb-select-field__menu-search-input\"\n type=\"text\"\n placeholder=\"Найти...\"\n value={props.searchValue}\n onChange={(e) => props.onSearchInputChange?.(e as SearchEvent)}\n fullWidth\n />\n </li>\n <MenuDivider />\n </Show>\n\n <Show when={props.isLoading}>\n <div class=\"smwb-select-field__menu-loading\">\n <ProgressIndicator type=\"indeterminate\" variant=\"circular\" class=\"smwb-select-field__menu__loader\" />\n </div>\n </Show>\n\n <Show when={!props.isLoading}>\n <Show\n when={useVirtual()}\n fallback={\n <Show\n when={props.items.length > 0}\n fallback={\n <Show when={!props.createOption}>\n <li class=\"smwb-select-field__empty-items\">{props.menuNoItemsMessage || \"Опций не найдено.\"}</li>\n </Show>\n }\n >\n <For each={toRows(props.items)}>{(row) => renderRow(row)}</For>\n </Show>\n }\n >\n <li role=\"presentation\" class=\"smwb-select-field__virtual-viewport\">\n <div\n class=\"smwb-select-field__virtual-scroller\"\n style={{ \"max-height\": `${viewportHeight()}px`, \"overflow-y\": \"auto\" }}\n onScroll={virtual.onScroll}\n >\n <div style={{ height: `${virtual.totalHeight()}px`, position: \"relative\" }}>\n <ul\n role=\"presentation\"\n class=\"smwb-select-field__virtual-list\"\n style={{ transform: `translateY(${virtual.offsetY()}px)`, \"list-style\": \"none\", margin: \"0\", padding: \"0\" }}\n >\n <For each={props.items.slice(virtual.startIndex(), virtual.endIndex())}>{(el) => renderItem(el)}</For>\n </ul>\n </div>\n </div>\n </li>\n </Show>\n </Show>\n\n <Show when={props.createOption}>\n {(createOption) => (\n <MenuItem\n value=\"__create__\"\n onClick={(e) => createOption().onCreate(e as ItemEvent)}\n class=\"smwb-select-field__create-option\"\n >\n {createOption().text}\n </MenuItem>\n )}\n </Show>\n </Menu>\n </Portal>\n );\n}\n\nexport default DropdownMenu;\n"],"names":["DropdownMenu","props","valueArray","Array","isArray","value","hasGroups","items","some","i","group","itemHeight","viewportHeight","menuMaxHeight","useVirtual","virtualized","isLoading","length","virtual","createVirtualList","itemCount","menuMinWidth","setMenuMinWidth","createSignal","createEffect","anchor","anchorElement","isOpen","clientWidth","onKeyDown","event","key","onClose","document","addEventListener","onCleanup","removeEventListener","toRows","list","out","lastGroup","el","push","kind","item","renderItem","_$createComponent","MenuItem","disabled","selected","find","v","onClick","e","onItemClick","optionRenderer","children","_$memo","text","Show","when","helperText","_el$","_tmpl$","_$insert","renderRow","row","_el$2","_tmpl$2","menuStyle","Portal","mount","isServer","undefined","container","body","Menu","middleware","menuMiddleware","style","search","_el$3","_tmpl$3","TextField","type","placeholder","searchValue","onChange","onSearchInputChange","fullWidth","MenuDivider","_el$4","_tmpl$4","ProgressIndicator","variant","fallback","createOption","_el$9","_tmpl$6","menuNoItemsMessage","For","each","_el$5","_tmpl$5","_el$6","firstChild","_el$7","_el$8","_$addEventListener","onScroll","slice","startIndex","endIndex","_$effect","_p$","_v$","_v$2","totalHeight","_v$3","offsetY","_$setStyleProperty","t","a","onCreate"],"mappings":"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"}