@smwb/ui-solid 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/assets/styles/less/components/carousel/carousel.entry.css +1 -1
  2. package/dist/components/dataDisplay/carousel/carousel.js +152 -138
  3. package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
  4. package/dist/components/dataDisplay/chat/chatAttachmentImage.js +17 -17
  5. package/dist/components/dataDisplay/chat/chatAttachmentImage.js.map +1 -1
  6. package/dist/components/dataDisplay/chat/chatShell.js +16 -16
  7. package/dist/components/dataDisplay/chat/chatShell.js.map +1 -1
  8. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +25 -25
  9. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  10. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js +15 -15
  11. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js.map +1 -1
  12. package/dist/components/feedBack/modal/modal.js +29 -29
  13. package/dist/components/feedBack/modal/modal.js.map +1 -1
  14. package/dist/components/inputs/datePicker/datePicker.js +43 -43
  15. package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
  16. package/dist/components/inputs/dateTimePicker/dateTimePicker.js +46 -46
  17. package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  18. package/dist/components/inputs/selectField/dropdownMenu.js +30 -30
  19. package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
  20. package/dist/components/inputs/slider/slider.js +48 -48
  21. package/dist/components/inputs/slider/slider.js.map +1 -1
  22. package/dist/components/inputs/timePicker/timePicker.js +31 -31
  23. package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
  24. package/dist/components/layout/sheet/sheet.js +29 -29
  25. package/dist/components/layout/sheet/sheet.js.map +1 -1
  26. package/dist/headless/components/dataDisplay/carousel/carousel.js +157 -143
  27. package/dist/headless/components/dataDisplay/carousel/carousel.js.map +1 -1
  28. package/dist/headless/components/dataDisplay/chat/chatAttachmentImage.js +17 -17
  29. package/dist/headless/components/dataDisplay/chat/chatAttachmentImage.js.map +1 -1
  30. package/dist/headless/components/dataDisplay/chat/chatShell.js +16 -16
  31. package/dist/headless/components/dataDisplay/chat/chatShell.js.map +1 -1
  32. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js +25 -25
  33. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  34. package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js +15 -15
  35. package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js.map +1 -1
  36. package/dist/headless/components/feedBack/modal/modal.js +25 -25
  37. package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
  38. package/dist/headless/components/inputs/datePicker/datePicker.js +43 -43
  39. package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
  40. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +46 -46
  41. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  42. package/dist/headless/components/inputs/selectField/dropdownMenu.js +30 -30
  43. package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
  44. package/dist/headless/components/inputs/slider/slider.js +90 -90
  45. package/dist/headless/components/inputs/slider/slider.js.map +1 -1
  46. package/dist/headless/components/inputs/timePicker/timePicker.js +31 -31
  47. package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
  48. package/dist/headless/components/layout/sheet/sheet.js +29 -29
  49. package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
  50. package/dist/ssr.ssr-spec.d.ts +1 -0
  51. package/package.json +4 -3
@@ -1,25 +1,25 @@
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, template as ie } from "solid-js/web";
2
- import { splitProps as se, createSignal as u, createEffect as L, createMemo as le, onCleanup as me, Show as ce } from "solid-js";
3
- import { buildFloatingMiddleware as ue, resolvePlacement as de } from "../../../utils/floating.js";
4
- import { createFloating as ge } from "../../../primitives/createFloating.js";
5
- import { DataPickerHeader as fe } from "../datePicker/dataPickerHeader.js";
6
- import { DataPickerDays as he } from "../datePicker/dataPickerDays.js";
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";
2
+ import { splitProps as le, createSignal as u, createEffect as L, createMemo as me, onCleanup as ce, Show as ue } from "solid-js";
3
+ import { buildFloatingMiddleware as de, resolvePlacement as ge } from "../../../utils/floating.js";
4
+ import { createFloating as fe } from "../../../primitives/createFloating.js";
5
+ import { DataPickerHeader as he } from "../datePicker/dataPickerHeader.js";
6
+ import { DataPickerDays as pe } from "../datePicker/dataPickerDays.js";
7
7
  import { DatePickerList as E } from "../datePicker/datePickerList.js";
8
- import { isValidDate as w, getMonths as pe, getYears as ve, setYear as be, setMonth as we } from "../datePicker/dateUtils.js";
9
- import { OpenView as r } from "../datePicker/openView.js";
10
- import { TimePickerColumns as De } from "../timePicker/timePickerColumns.js";
11
- import { isValidTimeDate as D, mergeTime as Ce, DEFAULT_TIME_FORMAT as ye, mergeDate as ke } from "../timePicker/timeUtils.js";
12
- import { DateTimePickerInput as _e } from "./dateTimePickerInput.js";
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";
10
+ import { TimePickerColumns as Ce } from "../timePicker/timePickerColumns.js";
11
+ import { isValidTimeDate as D, mergeTime as ye, DEFAULT_TIME_FORMAT as ke, mergeDate as _e } from "../timePicker/timeUtils.js";
12
+ import { DateTimePickerInput as Fe } from "./dateTimePickerInput.js";
13
13
  import { mergeRefs as I } from "../../../primitives/mergeRefs.js";
14
- import { ClickAwayListener as Fe } from "../../clickAwayListener/clickAwayListener.js";
15
- var Me = /* @__PURE__ */ ie('<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">');
16
- const Te = 150;
17
- function qe(C) {
18
- const [e, Y] = se(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);
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">');
16
+ const Ve = 150;
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);
19
19
  let k, _;
20
- const F = () => de(e.placement ?? "bottom-start"), h = ge({
20
+ const F = () => ge(e.placement ?? "bottom-start"), h = fe({
21
21
  placement: () => F().placement,
22
- middleware: () => ue(F())
22
+ middleware: () => de(F())
23
23
  });
24
24
  L(() => {
25
25
  if (e.disabled) return;
@@ -29,37 +29,37 @@ function qe(C) {
29
29
  const $ = () => e.weekStartsOn ?? 1, x = (t) => {
30
30
  m(t);
31
31
  }, B = () => {
32
- g(d() === r.months ? r.days : r.months);
32
+ g(d() === a.months ? a.days : a.months);
33
33
  }, R = () => {
34
- g(d() === r.years ? r.days : r.years);
34
+ g(d() === a.years ? a.days : a.years);
35
35
  }, q = (t) => {
36
- m(we(o(), t)), g(r.days);
36
+ m(De(o(), t)), g(a.days);
37
37
  }, U = (t) => {
38
- m(be(o(), t)), g(r.days);
38
+ m(we(o(), t)), g(a.days);
39
39
  }, M = (t) => {
40
40
  m(t), e.onChange?.(void 0, t, C);
41
- }, j = (t, a) => {
42
- if (!a) return;
41
+ }, j = (t, r) => {
42
+ if (!r) return;
43
43
  const n = l(), v = D(n) ? n : o();
44
- M(ke(a, v));
44
+ M(_e(r, v));
45
45
  }, z = (t) => {
46
- const a = l(), n = w(a) ? a : o();
47
- M(Ce(n, t));
46
+ const r = l(), n = w(r) ? r : o();
47
+ M(ye(n, t));
48
48
  }, G = () => {
49
49
  e.disabled || y((t) => !t);
50
50
  }, J = (t) => {
51
- const a = t.target;
52
- _?.contains(a) || k?.contains(a) || y(!1);
53
- }, K = () => e.timeFormat ? e.timeFormat : e.format?.includes("HH:mm:ss") ? "HH:mm:ss" : ye, N = le(() => pe(e.locale)), Q = ve((/* @__PURE__ */ new Date()).getFullYear(), 100), T = () => H() && !e.disabled && !e.disableCalendar, [V, O] = u(T()), [W, P] = u(!1);
51
+ const r = t.target;
52
+ _?.contains(r) || k?.contains(r) || y(!1);
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(() => {
56
- T() ? (c !== void 0 && clearTimeout(c), O(!0), p = requestAnimationFrame(() => P(!0))) : (P(!1), V() && (c = setTimeout(() => O(!1), Te)));
57
- }), me(() => {
56
+ T() ? (c !== void 0 && clearTimeout(c), O(!0), p = requestAnimationFrame(() => P(!0))) : (P(!1), V() && (c = setTimeout(() => O(!1), Ve)));
57
+ }), ce(() => {
58
58
  p !== void 0 && cancelAnimationFrame(p), c !== void 0 && clearTimeout(c);
59
59
  });
60
60
  const X = () => {
61
61
  switch (d()) {
62
- case r.months:
62
+ case a.months:
63
63
  return i(E, {
64
64
  get value() {
65
65
  return o().getMonth();
@@ -69,7 +69,7 @@ function qe(C) {
69
69
  },
70
70
  onChange: q
71
71
  });
72
- case r.years:
72
+ case a.years:
73
73
  return i(E, {
74
74
  get value() {
75
75
  return o().getFullYear();
@@ -78,7 +78,7 @@ function qe(C) {
78
78
  onChange: U
79
79
  });
80
80
  default:
81
- return i(he, {
81
+ return i(pe, {
82
82
  get viewValue() {
83
83
  return o();
84
84
  },
@@ -113,10 +113,10 @@ function qe(C) {
113
113
  });
114
114
  }
115
115
  };
116
- return [i(_e, ee({
116
+ return [i(Fe, ee({
117
117
  ref(t) {
118
- var a = I(e.ref, h.setReference, (n) => k = n);
119
- typeof a == "function" && a(t);
118
+ var r = I(e.ref, h.setReference, (n) => k = n);
119
+ typeof r == "function" && r(t);
120
120
  },
121
121
  get value() {
122
122
  return e.value;
@@ -140,21 +140,21 @@ function qe(C) {
140
140
  get calendarIcon() {
141
141
  return e.calendarIcon;
142
142
  }
143
- }, Y)), i(ce, {
143
+ }, Y)), i(ue, {
144
144
  get when() {
145
145
  return V();
146
146
  },
147
147
  get children() {
148
148
  return i(te, {
149
149
  get mount() {
150
- return document.body;
150
+ return ie ? void 0 : document.body;
151
151
  },
152
152
  get children() {
153
- return i(Fe, {
153
+ return i(Me, {
154
154
  onClickAway: J,
155
155
  get children() {
156
- var t = Me(), 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(fe, {
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, {
158
158
  get viewValue() {
159
159
  return o();
160
160
  },
@@ -167,7 +167,7 @@ function qe(C) {
167
167
  onChange: x,
168
168
  onMonthLabelClick: B,
169
169
  onYearLabelClick: R
170
- }), n), b(v, X), b(n, i(De, {
170
+ }), n), b(v, X), b(n, i(Ce, {
171
171
  get value() {
172
172
  return o();
173
173
  },
@@ -175,7 +175,7 @@ function qe(C) {
175
175
  return K();
176
176
  },
177
177
  onChange: z
178
- }), null), re((s) => {
178
+ }), null), ae((s) => {
179
179
  var Z = {
180
180
  ...h.floatingStyles(),
181
181
  opacity: W() ? 1 : 0
@@ -193,6 +193,6 @@ function qe(C) {
193
193
  })];
194
194
  }
195
195
  export {
196
- qe as DateTimePicker
196
+ Ue as DateTimePicker
197
197
  };
198
198
  //# sourceMappingURL=dateTimePicker.js.map
@@ -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 } 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={document.body}>\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","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 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,18 +1,18 @@
1
- import { createComponent as r, Portal as L, insert as u, addEventListener as S, effect as O, setStyleProperty as d, template as o, memo as R } from "solid-js/web";
2
- import { createSignal as W, createEffect as x, onCleanup as A, Show as l, For as b } from "solid-js";
3
- import { createVirtualList as D } from "../../../primitives/createVirtualList.js";
4
- import { Menu as P } from "../../navigation/menu/menu.js";
5
- import { TextField as T } from "../textField/textField.js";
6
- import { MenuDivider as V } from "../../navigation/menu/menuDivider.js";
7
- import { ProgressIndicator as F } from "../../feedBack/progressIndicator/progressIndicator.js";
1
+ import { createComponent as r, Portal as L, insert as u, addEventListener as S, effect as O, setStyleProperty as d, isServer as R, template as o, memo as W } from "solid-js/web";
2
+ import { createSignal as A, createEffect as x, onCleanup as D, Show as l, For as b } from "solid-js";
3
+ import { createVirtualList as P } from "../../../primitives/createVirtualList.js";
4
+ import { Menu as T } from "../../navigation/menu/menu.js";
5
+ import { TextField as V } from "../textField/textField.js";
6
+ import { MenuDivider as F } from "../../navigation/menu/menuDivider.js";
7
+ import { ProgressIndicator as G } from "../../feedBack/progressIndicator/progressIndicator.js";
8
8
  import { MenuItem as $ } from "../../navigation/menu/menuItem.js";
9
- var G = /* @__PURE__ */ o("<span class=smwb-select-field__option__helper-text>"), Y = /* @__PURE__ */ o("<li class=smwb-select-field__group-label role=presentation>"), z = /* @__PURE__ */ o("<li class=smwb-select-field__menu-search>"), K = /* @__PURE__ */ o("<div class=smwb-select-field__menu-loading>"), N = /* @__PURE__ */ o("<li role=presentation class=smwb-select-field__virtual-viewport><div class=smwb-select-field__virtual-scroller style=overflow-y:auto><div style=position:relative><ul role=presentation class=smwb-select-field__virtual-list style=list-style:none;margin:0;padding:0>"), j = /* @__PURE__ */ o("<li class=smwb-select-field__empty-items>");
10
- function ee(t) {
11
- const C = () => Array.isArray(t.value) ? t.value : [t.value], m = () => t.items.some((e) => !!e.group), M = () => t.itemHeight ?? 40, h = () => t.menuMaxHeight || 240, g = () => !!t.virtualized && !m() && !t.isLoading && t.items.length > 0, s = D({
9
+ var Y = /* @__PURE__ */ o("<span class=smwb-select-field__option__helper-text>"), z = /* @__PURE__ */ o("<li class=smwb-select-field__group-label role=presentation>"), K = /* @__PURE__ */ o("<li class=smwb-select-field__menu-search>"), N = /* @__PURE__ */ o("<div class=smwb-select-field__menu-loading>"), j = /* @__PURE__ */ o("<li role=presentation class=smwb-select-field__virtual-viewport><div class=smwb-select-field__virtual-scroller style=overflow-y:auto><div style=position:relative><ul role=presentation class=smwb-select-field__virtual-list style=list-style:none;margin:0;padding:0>"), q = /* @__PURE__ */ o("<li class=smwb-select-field__empty-items>");
10
+ function te(t) {
11
+ const C = () => Array.isArray(t.value) ? t.value : [t.value], m = () => t.items.some((e) => !!e.group), M = () => t.itemHeight ?? 40, h = () => t.menuMaxHeight || 240, g = () => !!t.virtualized && !m() && !t.isLoading && t.items.length > 0, s = P({
12
12
  itemCount: () => g() ? t.items.length : 0,
13
13
  itemHeight: M,
14
14
  viewportHeight: h
15
- }), [f, k] = W();
15
+ }), [v, k] = A();
16
16
  x(() => {
17
17
  const e = t.anchorElement();
18
18
  t.isOpen && e && k(e.clientWidth);
@@ -21,7 +21,7 @@ function ee(t) {
21
21
  const e = (n) => {
22
22
  n.key === "Escape" && t.onClose();
23
23
  };
24
- document.addEventListener("keydown", e), A(() => document.removeEventListener("keydown", e));
24
+ document.addEventListener("keydown", e), D(() => document.removeEventListener("keydown", e));
25
25
  });
26
26
  const E = (e) => {
27
27
  const n = [];
@@ -35,7 +35,7 @@ function ee(t) {
35
35
  item: a
36
36
  });
37
37
  return n;
38
- }, v = (e) => r($, {
38
+ }, f = (e) => r($, {
39
39
  get value() {
40
40
  return e.value;
41
41
  },
@@ -52,22 +52,22 @@ function ee(t) {
52
52
  return t.optionRenderer;
53
53
  },
54
54
  get children() {
55
- return [R(() => e.text), r(l, {
55
+ return [W(() => e.text), r(l, {
56
56
  get when() {
57
57
  return e.helperText;
58
58
  },
59
59
  get children() {
60
- var n = G();
60
+ var n = Y();
61
61
  return u(n, () => e.helperText), n;
62
62
  }
63
63
  })];
64
64
  }
65
65
  }), I = (e) => e.kind === "group" ? (() => {
66
- var n = Y();
66
+ var n = z();
67
67
  return u(n, () => e.group), n;
68
- })() : v(e.item), H = () => ({
69
- ...f() ? {
70
- "min-width": `${f()}px`
68
+ })() : f(e.item), H = () => ({
69
+ ...v() ? {
70
+ "min-width": `${v()}px`
71
71
  } : {},
72
72
  ...t.menuMaxHeight ? {
73
73
  "max-height": `${t.menuMaxHeight}px`,
@@ -76,10 +76,10 @@ function ee(t) {
76
76
  });
77
77
  return r(L, {
78
78
  get mount() {
79
- return t.container ?? document.body;
79
+ return R ? void 0 : t.container ?? document.body;
80
80
  },
81
81
  get children() {
82
- return r(P, {
82
+ return r(T, {
83
83
  get isOpen() {
84
84
  return t.isOpen;
85
85
  },
@@ -100,8 +100,8 @@ function ee(t) {
100
100
  },
101
101
  get children() {
102
102
  return [(() => {
103
- var e = z();
104
- return u(e, r(T, {
103
+ var e = K();
104
+ return u(e, r(V, {
105
105
  class: "smwb-select-field__menu-search-input",
106
106
  type: "text",
107
107
  placeholder: "Найти...",
@@ -111,15 +111,15 @@ function ee(t) {
111
111
  onChange: (n) => t.onSearchInputChange?.(n),
112
112
  fullWidth: !0
113
113
  })), e;
114
- })(), r(V, {})];
114
+ })(), r(F, {})];
115
115
  }
116
116
  }), r(l, {
117
117
  get when() {
118
118
  return t.isLoading;
119
119
  },
120
120
  get children() {
121
- var e = K();
122
- return u(e, r(F, {
121
+ var e = N();
122
+ return u(e, r(G, {
123
123
  type: "indeterminate",
124
124
  variant: "circular",
125
125
  class: "smwb-select-field__menu__loader"
@@ -145,7 +145,7 @@ function ee(t) {
145
145
  return !t.createOption;
146
146
  },
147
147
  get children() {
148
- var e = j();
148
+ var e = q();
149
149
  return u(e, () => t.menuNoItemsMessage || "Опций не найдено."), e;
150
150
  }
151
151
  });
@@ -161,12 +161,12 @@ function ee(t) {
161
161
  });
162
162
  },
163
163
  get children() {
164
- var e = N(), n = e.firstChild, c = n.firstChild, a = c.firstChild;
164
+ var e = j(), n = e.firstChild, c = n.firstChild, a = c.firstChild;
165
165
  return S(n, "scroll", s.onScroll), u(a, r(b, {
166
166
  get each() {
167
167
  return t.items.slice(s.startIndex(), s.endIndex());
168
168
  },
169
- children: (i) => v(i)
169
+ children: (i) => f(i)
170
170
  })), O((i) => {
171
171
  var _ = `${h()}px`, w = `${s.totalHeight()}px`, y = `translateY(${s.offsetY()}px)`;
172
172
  return _ !== i.e && d(n, "max-height", i.e = _), w !== i.t && d(c, "height", i.t = w), y !== i.a && d(a, "transform", i.a = y), i;
@@ -197,6 +197,6 @@ function ee(t) {
197
197
  });
198
198
  }
199
199
  export {
200
- ee as DropdownMenu
200
+ te as DropdownMenu
201
201
  };
202
202
  //# sourceMappingURL=dropdownMenu.js.map
@@ -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 } 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={props.container ?? document.body}>\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","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","undefined","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 >\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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"}