@rio-cloud/rio-uikit 2.4.2 → 2.5.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 (125) hide show
  1. package/CountedInput.d.ts +2 -0
  2. package/CountedInput.js +5 -0
  3. package/CountedInput.js.map +1 -0
  4. package/TabbedPanel.d.ts +2 -0
  5. package/TabbedPanel.js +5 -0
  6. package/TabbedPanel.js.map +1 -0
  7. package/components/applicationHeader/NavItems.js +58 -46
  8. package/components/applicationHeader/NavItems.js.map +1 -1
  9. package/components/applicationLayout/ApplicationLayoutBody.d.ts +1 -1
  10. package/components/applicationLayout/ApplicationLayoutBody.js +29 -29
  11. package/components/applicationLayout/ApplicationLayoutBody.js.map +1 -1
  12. package/components/applicationLayout/ApplicationLayoutHeader.js +22 -7
  13. package/components/applicationLayout/ApplicationLayoutHeader.js.map +1 -1
  14. package/components/assetTree/useTreeHeight.js.map +1 -1
  15. package/components/button/Button.d.ts +11 -3
  16. package/components/button/Button.js.map +1 -1
  17. package/components/clearableInput/ClearableInput.d.ts +4 -0
  18. package/components/clearableInput/ClearableInput.js.map +1 -1
  19. package/components/countedInput/CountedInput.d.ts +91 -0
  20. package/components/countedInput/CountedInput.js +65 -0
  21. package/components/countedInput/CountedInput.js.map +1 -0
  22. package/components/datepicker/DayPicker.js +3 -2
  23. package/components/datepicker/DayPicker.js.map +1 -1
  24. package/components/datepicker/DayPickerInput.d.ts +1 -1
  25. package/components/datepicker/DayPickerInput.js.map +1 -1
  26. package/components/datepicker/dayPickerTypes.d.ts +3 -2
  27. package/components/datepicker/dayPickerTypes.js.map +1 -1
  28. package/components/datepicker/dayPickerUtils.d.ts +1 -1
  29. package/components/datepicker/dayPickerUtils.js +45 -22
  30. package/components/datepicker/dayPickerUtils.js.map +1 -1
  31. package/components/datepicker/useDayPickerInputState.d.ts +1 -1
  32. package/components/dialog/ConfirmationDialog.d.ts +17 -0
  33. package/components/dialog/ConfirmationDialog.js +43 -19
  34. package/components/dialog/ConfirmationDialog.js.map +1 -1
  35. package/components/dialog/DialogHeader.js +20 -19
  36. package/components/dialog/DialogHeader.js.map +1 -1
  37. package/components/dropdown/ButtonDropdown.d.ts +5 -0
  38. package/components/dropdown/ButtonDropdown.js +63 -61
  39. package/components/dropdown/ButtonDropdown.js.map +1 -1
  40. package/components/dropdown/DropdownToggleButton.d.ts +2 -0
  41. package/components/dropdown/DropdownToggleButton.js +39 -35
  42. package/components/dropdown/DropdownToggleButton.js.map +1 -1
  43. package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js +103 -105
  44. package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js.map +1 -1
  45. package/components/map/utils/eventHandling.js.map +1 -1
  46. package/components/map/utils/mapTypes.d.ts +7 -0
  47. package/components/map/utils/mapTypes.js.map +1 -1
  48. package/components/map/utils/rendering.js +5 -5
  49. package/components/numberControl/NumberControl.js.map +1 -1
  50. package/components/page/Page.d.ts +2 -0
  51. package/components/page/Page.js.map +1 -1
  52. package/components/rioglyph/Rioglyph.d.ts +8 -2
  53. package/components/rioglyph/Rioglyph.js.map +1 -1
  54. package/components/rioglyph/RioglyphIconType.d.ts +1 -1
  55. package/components/selects/BaseSelectDropdown.d.ts +8 -0
  56. package/components/selects/BaseSelectDropdown.js +76 -60
  57. package/components/selects/BaseSelectDropdown.js.map +1 -1
  58. package/components/selects/Multiselect.d.ts +5 -0
  59. package/components/selects/Multiselect.js +60 -58
  60. package/components/selects/Multiselect.js.map +1 -1
  61. package/components/selects/Select.d.ts +5 -0
  62. package/components/selects/Select.js +60 -58
  63. package/components/selects/Select.js.map +1 -1
  64. package/components/sidebars/Sidebar.js +40 -40
  65. package/components/sidebars/Sidebar.js.map +1 -1
  66. package/components/sidebars/SidebarCloseButton.d.ts +3 -1
  67. package/components/sidebars/SidebarCloseButton.js +19 -5
  68. package/components/sidebars/SidebarCloseButton.js.map +1 -1
  69. package/components/states/CustomState.d.ts +7 -1
  70. package/components/states/CustomState.js.map +1 -1
  71. package/components/states/StateButton.d.ts +11 -1
  72. package/components/states/StateButton.js +46 -10
  73. package/components/states/StateButton.js.map +1 -1
  74. package/components/statsWidget/StatsWidgetNumber.d.ts +16 -1
  75. package/components/statsWidget/StatsWidgetNumber.js +29 -12
  76. package/components/statsWidget/StatsWidgetNumber.js.map +1 -1
  77. package/components/tabbedPanel/TabbedPanel.d.ts +99 -0
  78. package/components/tabbedPanel/TabbedPanel.js +119 -0
  79. package/components/tabbedPanel/TabbedPanel.js.map +1 -0
  80. package/components/table/Table.types.d.ts +9 -1
  81. package/components/table/TableColumn.js +20 -19
  82. package/components/table/TableColumn.js.map +1 -1
  83. package/components/table/TableHeaderColumn.d.ts +4 -0
  84. package/components/table/TableHeaderColumn.js +50 -53
  85. package/components/table/TableHeaderColumn.js.map +1 -1
  86. package/components/table/TableToolbar.d.ts +4 -0
  87. package/components/table/TableToolbar.js.map +1 -1
  88. package/components/table/TableToolbarColumn.d.ts +3 -0
  89. package/components/table/TableToolbarColumn.js.map +1 -1
  90. package/components/table/render/header/resolveHeaderCellStyle.d.ts +87 -55
  91. package/components/timepicker/TimePicker.d.ts +6 -0
  92. package/components/timepicker/TimePicker.js +57 -56
  93. package/components/timepicker/TimePicker.js.map +1 -1
  94. package/hooks/useClickOutside.js +3 -3
  95. package/hooks/useClipboard.js.map +1 -1
  96. package/hooks/useScrollPosition.js.map +1 -1
  97. package/package.json +4 -4
  98. package/themes/Volkswagen/components/applicationHeader/VolkswagenApplicationHeader.js +23 -22
  99. package/themes/Volkswagen/components/applicationHeader/VolkswagenApplicationHeader.js.map +1 -1
  100. package/utils/analytics/getTrackingLabelFromNode.d.ts +2 -0
  101. package/utils/analytics/getTrackingLabelFromNode.js +24 -0
  102. package/utils/analytics/getTrackingLabelFromNode.js.map +1 -0
  103. package/utils/analytics/googleAnalyticsUtils.js +21 -28
  104. package/utils/analytics/googleAnalyticsUtils.js.map +1 -1
  105. package/utils/getNodeTextContent.d.ts +2 -0
  106. package/utils/getNodeTextContent.js +22 -0
  107. package/utils/getNodeTextContent.js.map +1 -0
  108. package/utils/init/initCSS.js +5 -5
  109. package/utils/init/initCSS.js.map +1 -1
  110. package/utils/init/initConfig.js +4 -7
  111. package/utils/init/initConfig.js.map +1 -1
  112. package/utils/init/initDocumentBootstrapping.js +14 -14
  113. package/utils/init/initDocumentBootstrapping.js.map +1 -1
  114. package/version.d.ts +1 -1
  115. package/version.js +1 -1
  116. package/version.js.map +1 -1
  117. package/DayPickerPrototype.d.ts +0 -2
  118. package/DayPickerPrototype.js +0 -5
  119. package/DayPickerPrototype.js.map +0 -1
  120. package/TableNext.d.ts +0 -2
  121. package/TableNext.js +0 -25
  122. package/TableNext.js.map +0 -1
  123. package/components/datepicker/DayPickerPrototype.d.ts +0 -53
  124. package/components/datepicker/DayPickerPrototype.js +0 -285
  125. package/components/datepicker/DayPickerPrototype.js.map +0 -1
@@ -1,24 +1,24 @@
1
- import { jsxs as F, jsx as i } from "react/jsx-runtime";
1
+ import { jsxs as b, jsx as i } from "react/jsx-runtime";
2
2
  import { useState as o, useRef as U } from "react";
3
3
  import { isEqual as V } from "es-toolkit/predicate";
4
- import { noop as Oe, isEmpty as ve } from "es-toolkit/compat";
4
+ import { noop as ve, isEmpty as xe } from "es-toolkit/compat";
5
5
  import K from "../../utils/classNames.js";
6
- import xe, { filterOptions as we } from "./BaseSelectDropdown.js";
7
- import De from "../../hooks/useClickOutside.js";
8
- import Me from "../../hooks/useEffectOnce.js";
9
- import Ne from "../../hooks/useMergeRefs.js";
10
- import Ee from "./ClearButton.js";
11
- import ke from "./SelectFilter.js";
12
- import Ae from "./SelectedOption.js";
13
- import Te from "./WithFeedbackAndAddon.js";
14
- const u = -1, Xe = (R) => {
6
+ import we, { filterOptions as De } from "./BaseSelectDropdown.js";
7
+ import Me from "../../hooks/useClickOutside.js";
8
+ import Ne from "../../hooks/useEffectOnce.js";
9
+ import Ee from "../../hooks/useMergeRefs.js";
10
+ import ke from "./ClearButton.js";
11
+ import Ae from "./SelectFilter.js";
12
+ import Te from "./SelectedOption.js";
13
+ import ye from "./WithFeedbackAndAddon.js";
14
+ const f = -1, Ge = (R) => {
15
15
  const {
16
- name: b,
17
- id: B = b,
16
+ name: F,
17
+ id: B = F,
18
18
  label: _,
19
19
  options: t = [],
20
20
  value: n,
21
- onChange: O = Oe,
21
+ onChange: O = ve,
22
22
  placeholder: j,
23
23
  isLoading: L = !1,
24
24
  dropup: W = !1,
@@ -38,26 +38,27 @@ const u = -1, Xe = (R) => {
38
38
  dropdownClassName: ee,
39
39
  btnClassName: w,
40
40
  className: D,
41
+ trackingAttributes: te,
41
42
  inputAddon: M,
42
43
  errorMessage: N,
43
44
  warningMessage: E,
44
- messageWhiteSpace: te = "normal",
45
- ...se
46
- } = R, [l, k] = o(!1), [h, p] = o(null), [I, c] = o(!1), [A, d] = o(""), [oe, r] = o(t), [T, ne] = o([]), [le, m] = o(u), [y, f] = o(!1), re = U(), P = U(null), ae = De(() => S()), ie = Ne(re, ae), C = (e, s) => {
47
- s && !ve(s) ? p(e.find((a) => a.id === s[0]) || null) : e && p(e.find((a) => a.selected) || null);
45
+ messageWhiteSpace: se = "normal",
46
+ ...oe
47
+ } = R, [r, k] = o(!1), [h, p] = o(null), [I, c] = o(!1), [A, d] = o(""), [ne, l] = o(t), [T, re] = o([]), [le, m] = o(f), [y, u] = o(!1), ae = U(), P = U(null), ie = Me(() => S()), ce = Ee(ae, ie), C = (e, s) => {
48
+ s && !xe(s) ? p(e.find((a) => a.id === s[0]) || null) : e && p(e.find((a) => a.selected) || null);
48
49
  };
49
- Me(() => {
50
+ Ne(() => {
50
51
  C(t, n);
51
52
  });
52
- const [ce, de] = o(t);
53
- V(t, ce) || (C(t, n), r(t), de(t));
54
- const [fe, ue] = o(n);
55
- V(n, fe) || (C(t, n), ue(n));
56
- const pe = (e = []) => {
57
- !e.length || (I || A) && T.length > 0 || ne(e);
58
- }, me = () => {
59
- p(null), c(!1), d(""), r(t), f(!1), m(u), O(void 0);
53
+ const [de, ue] = o(t);
54
+ V(t, de) || (C(t, n), l(t), ue(t));
55
+ const [fe, pe] = o(n);
56
+ V(n, fe) || (C(t, n), pe(n));
57
+ const me = (e = []) => {
58
+ !e.length || (I || A) && T.length > 0 || re(e);
60
59
  }, ge = () => {
60
+ p(null), c(!1), d(""), l(t), u(!1), m(f), O(void 0);
61
+ }, he = () => {
61
62
  const e = K(
62
63
  "dropdown-toggle",
63
64
  "form-control",
@@ -66,30 +67,31 @@ const u = -1, Xe = (R) => {
66
67
  g === "sm" && "input-sm",
67
68
  g === "lg" && "input-lg",
68
69
  v && "disabled"
69
- ), s = /* @__PURE__ */ F(
70
+ ), s = /* @__PURE__ */ b(
70
71
  "button",
71
72
  {
72
73
  type: "button",
73
74
  id: B,
74
- name: b,
75
+ name: F,
75
76
  className: e,
77
+ ...te,
76
78
  "data-toggle": "dropdown",
77
79
  tabIndex: G,
78
80
  "aria-haspopup": "true",
79
- "aria-expanded": l,
80
- onClick: Se,
81
+ "aria-expanded": r,
82
+ onClick: be,
81
83
  ref: P,
82
84
  children: [
83
- J && l && /* @__PURE__ */ i(
84
- ke,
85
+ J && r && /* @__PURE__ */ i(
86
+ Ae,
85
87
  {
86
88
  isFilterActive: I,
87
89
  filterValue: A,
88
- onChange: Ie
90
+ onChange: Ce
89
91
  }
90
92
  ),
91
93
  x || /* @__PURE__ */ i(
92
- Ae,
94
+ Te,
93
95
  {
94
96
  label: _,
95
97
  placeholder: j,
@@ -99,36 +101,36 @@ const u = -1, Xe = (R) => {
99
101
  showUnselectedItemIcons: $
100
102
  }
101
103
  ),
102
- /* @__PURE__ */ F("span", { className: "select-toggle-actions", children: [
103
- /* @__PURE__ */ i(Ee, { showClear: Q, selectedItem: h, onClear: me }),
104
+ /* @__PURE__ */ b("span", { className: "select-toggle-actions", children: [
105
+ /* @__PURE__ */ i(ke, { showClear: Q, selectedItem: h, onClear: ge }),
104
106
  /* @__PURE__ */ i("span", { className: "caret" })
105
107
  ] })
106
108
  ]
107
109
  }
108
110
  );
109
111
  return !M && !N && !E ? s : /* @__PURE__ */ i(
110
- Te,
112
+ ye,
111
113
  {
112
114
  bsSize: g,
113
115
  inputAddon: M,
114
116
  errorMessage: N,
115
117
  warningMessage: E,
116
- messageWhiteSpace: te,
118
+ messageWhiteSpace: se,
117
119
  children: s
118
120
  }
119
121
  );
120
- }, he = () => {
122
+ }, Ie = () => {
121
123
  let e = le;
122
124
  return y && !h && (e = 0), /* @__PURE__ */ i(
123
- xe,
125
+ we,
124
126
  {
125
- isOpen: l,
127
+ isOpen: r,
126
128
  isLoading: L,
127
- options: oe,
129
+ options: ne,
128
130
  focusedItemIndex: e,
129
131
  keyboardUsed: y,
130
- updateDOMValues: pe,
131
- onSelect: Ce,
132
+ updateDOMValues: me,
133
+ onSelect: Se,
132
134
  onClose: S,
133
135
  noItemMessage: Y,
134
136
  pullRight: q,
@@ -137,38 +139,38 @@ const u = -1, Xe = (R) => {
137
139
  dropdownClassName: ee
138
140
  }
139
141
  );
140
- }, Ie = (e) => {
142
+ }, Ce = (e) => {
141
143
  e.preventDefault();
142
144
  const s = e.currentTarget.value;
143
145
  if (s === "") {
144
- c(!1), d(""), r(t), f(!1), m(u);
146
+ c(!1), d(""), l(t), u(!1), m(f);
145
147
  return;
146
148
  }
147
- const a = we(T, s, t), be = a.length > 0 ? 0 : u;
148
- c(!0), d(s), r(a), f(!0), m(be);
149
- }, Ce = (e) => {
150
- p(e || null), c(!1), d(""), r(t), O(e), S();
149
+ const a = De(T, s, t), Oe = a.length > 0 ? 0 : f;
150
+ c(!0), d(s), l(a), u(!0), m(Oe);
151
151
  }, Se = (e) => {
152
+ p(e || null), c(!1), d(""), l(t), O(e), S();
153
+ }, be = (e) => {
152
154
  if (v || I)
153
155
  return;
154
156
  const s = e.detail === 0;
155
- k(!l), f(s);
157
+ k(!r), u(s);
156
158
  }, S = () => {
157
- l && (k(!1), c(!1), d(""), r(t), f(!1), m(u), P.current?.focus());
159
+ r && (k(!1), c(!1), d(""), l(t), u(!1), m(f), P.current?.focus());
158
160
  }, Fe = K(
159
161
  "select",
160
162
  "dropdown",
161
- l && "open",
163
+ r && "open",
162
164
  H && "has-error",
163
165
  X === "blank" && "select-blank",
164
166
  D && D
165
167
  );
166
- return /* @__PURE__ */ F("div", { ...se, className: Fe, ref: ie, children: [
167
- ge(),
168
- he()
168
+ return /* @__PURE__ */ b("div", { ...oe, className: Fe, ref: ce, children: [
169
+ he(),
170
+ Ie()
169
171
  ] });
170
172
  };
171
173
  export {
172
- Xe as default
174
+ Ge as default
173
175
  };
174
176
  //# sourceMappingURL=Select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../src/components/selects/Select.tsx"],"sourcesContent":["import type React from 'react';\nimport { useRef, useState } from 'react';\nimport { isEqual } from 'es-toolkit/predicate';\nimport { isEmpty, noop } from 'es-toolkit/compat';\n\nimport classNames from '../../utils/classNames';\nimport BaseSelectDropdown, { filterOptions, type OptionDOMValue, type SelectOption } from './BaseSelectDropdown';\nimport useClickOutside from '../../useClickOutside';\nimport useEffectOnce from '../../hooks/useEffectOnce';\nimport useMergeRefs from '../../hooks/useMergeRefs';\nimport ClearButton from './ClearButton';\nimport SelectFilter from './SelectFilter';\nimport SelectedOption from './SelectedOption';\nimport WithFeedbackAndAddon, { type WithFeedbackAndAddonProps } from './WithFeedbackAndAddon';\n\nexport type { SelectOption } from './BaseSelectDropdown';\n\nconst DEFAULT_FOCUSED_ITEM_INDEX = -1;\n\n/**\n * Note: Even with a pre-selected item, when it first opens the dropdown it renders the full options list,\n * not just the selected one. The filter is only usable while the dropdown is open.\n */\nexport type SelectProps<T extends SelectOption> = Omit<WithFeedbackAndAddonProps, 'bsSize'> & {\n /**\n * Passed through as HTML attribute to the toggle button.\n */\n name?: string;\n\n /**\n * Passed through as HTML attribute to the toggle button.\n *\n * @default Uses the value given to `name` if not provided explicitly.\n */\n id?: string;\n\n /**\n * The toggle label in front of the selected text.\n */\n label?: string | React.ReactNode;\n\n /**\n * Items to display in the dropdown menu.\n *\n * @default []\n */\n options?: T[];\n\n /**\n * Sets the ids of the selected options when the component is already mounted.\n */\n value?: string[];\n\n /**\n * Callback function triggered when an item is selected.\n *\n * @param selectedOption The option that was selected (or undefined if none was).\n *\n * @default () => {}\n */\n onChange?: (selectOption: T | undefined) => void;\n\n /**\n * Text to display when nothing is selected.\n */\n placeholder?: string | React.ReactNode;\n\n /**\n * Defines whether the dropdown opens upwards.\n *\n * Set to `true` additionally disables autoDrop feature.\n *\n * @default false\n */\n dropup?: boolean;\n\n /**\n * Defines whether the dropdown opens right aligned to the dropdown toggle.\n *\n * Set to 'true' additionally disables autoDrop feature.\n *\n * @default false\n */\n pullRight?: boolean;\n\n /**\n * Enables or disables the autoDrop positioning feature.\n *\n * When enabled, the option list opens below or above the input depending on the surrounding space.\n *\n * @default true\n */\n autoDropDirection?: boolean;\n\n /**\n * Defines the size of the select to be rendered.\n *\n * @default 'md'\n */\n bsSize?: 'sm' | 'md' | 'lg';\n\n /**\n * Defines the visual variant of the select.\n *\n * @default 'default'\n */\n variant?: 'default' | 'blank';\n\n /**\n * Option to disable the opening of the option list.\n *\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Sets the input's tabindex attribute.\n *\n * The tabindex attribute allows developers to make HTML elements focusable, allow or prevent them from being\n * sequentially focusable (usually with the Tab key, hence the name) and determine their relative ordering for\n * sequential focus navigation.\n *\n * @default 0\n */\n tabIndex?: number;\n\n /**\n * Defines whether the Bootstrap error classes shall be added to the toggle element.\n *\n * @default false\n */\n hasError?: boolean;\n\n /**\n * Defines whether the component should be filterable.\n *\n * @default false\n */\n useFilter?: boolean;\n\n /**\n * Set to show a clear button.\n *\n * @default false\n */\n useClear?: boolean;\n\n /**\n * Shows a loading spinner instead of the menu items if set to true.\n *\n * @default false\n */\n isLoading?: boolean;\n\n /**\n * Text that shall be shown when not match was found when filtering.\n */\n noItemMessage?: string | React.ReactNode;\n\n /**\n * Text or node to be rendered on the toggle select instead of the selected item label.\n */\n selectedOptionText?: string | React.ReactNode;\n\n /**\n * Set to show only the icon and not the label of selected item.\n *\n * @default false\n */\n showSelectedItemIcon?: boolean;\n\n /**\n * Set to show all item icons within the toggle element.\n *\n * Selected items are highlighted and unselected items are shown as inactive.\n *\n * @default false\n */\n showUnselectedItemIcons?: boolean;\n\n /**\n * Additional classes to be set to the dropdown.\n */\n dropdownClassName?: string;\n\n /**\n * Additional classes to be set to the select/input.\n */\n btnClassName?: string;\n\n /**\n * Additional classes to be set to the select wrapper.\n */\n className?: string;\n};\n\nconst Select = <T extends SelectOption>(props: SelectProps<T>) => {\n const {\n name,\n id = name,\n label,\n options = [],\n value,\n onChange = noop,\n placeholder,\n isLoading = false,\n dropup = false,\n pullRight = false,\n autoDropDirection = true,\n bsSize = 'md',\n variant = 'default',\n disabled = false,\n tabIndex = 0,\n hasError = false,\n useFilter = false,\n useClear = false,\n noItemMessage,\n selectedOptionText,\n showSelectedItemIcon = false,\n showUnselectedItemIcons = false,\n dropdownClassName,\n btnClassName,\n className,\n\n inputAddon,\n errorMessage,\n warningMessage,\n messageWhiteSpace = 'normal',\n\n ...remainingProps\n } = props;\n\n const [isOpen, setIsOpen] = useState(false);\n const [selectedItem, setSelectedItem] = useState<SelectOption | null>(null);\n const [isFilterActive, setIsFilterActive] = useState(false);\n const [filterValue, setFilterValue] = useState('');\n const [filteredOptions, setFilteredOptions] = useState(options);\n const [itemDOMValues, setItemDOMValues] = useState<OptionDOMValue[]>([]);\n const [focusedItemIndex, setFocusedItemIndex] = useState(DEFAULT_FOCUSED_ITEM_INDEX);\n const [keyboardUsed, setKeyboardUsed] = useState(false);\n\n const refSelect = useRef();\n const refToggle = useRef<HTMLButtonElement>(null);\n\n const ref = useClickOutside(() => closeMenu());\n const mergedSelectRefs = useMergeRefs(refSelect, ref);\n\n const updateSelectedItem = (selectOptions: SelectOption[], updatedValue: string[] | undefined) => {\n if (updatedValue && !isEmpty(updatedValue)) {\n setSelectedItem(selectOptions.find(item => item.id === updatedValue[0]) || null);\n } else if (selectOptions) {\n setSelectedItem(selectOptions.find(item => item.selected) || null);\n }\n };\n\n useEffectOnce(() => {\n updateSelectedItem(options, value);\n });\n\n const [previousOptions, setPreviousOptions] = useState(options);\n if (!isEqual(options, previousOptions)) {\n updateSelectedItem(options, value);\n setFilteredOptions(options);\n setPreviousOptions(options);\n }\n\n const [previousValue, setPreviousValue] = useState(value);\n if (!isEqual(value, previousValue)) {\n updateSelectedItem(options, value);\n setPreviousValue(value);\n }\n\n const updateDOMValues = (itemDOMValuesToUpdated: OptionDOMValue[] = []) => {\n // Skip updates when we have nothing new, or when filtering is active and we already hold a full snapshot.\n if (!itemDOMValuesToUpdated.length) {\n return;\n }\n\n const shouldKeepPreviousSnapshot = (isFilterActive || filterValue) && itemDOMValues.length > 0;\n if (shouldKeepPreviousSnapshot) {\n return;\n }\n\n setItemDOMValues(itemDOMValuesToUpdated);\n };\n\n const handleClearSelectedItem = () => {\n setSelectedItem(null);\n setIsFilterActive(false);\n setFilterValue('');\n setFilteredOptions(options);\n setKeyboardUsed(false);\n setFocusedItemIndex(DEFAULT_FOCUSED_ITEM_INDEX);\n\n onChange(undefined);\n };\n\n const renderToggle = () => {\n const toggleClasses = classNames(\n 'dropdown-toggle',\n 'form-control',\n 'text-left',\n btnClassName && btnClassName,\n bsSize === 'sm' && 'input-sm',\n bsSize === 'lg' && 'input-lg',\n disabled && 'disabled'\n );\n\n const toggleButton = (\n <button\n type='button'\n id={id}\n name={name}\n className={toggleClasses}\n data-toggle='dropdown'\n tabIndex={tabIndex}\n aria-haspopup='true'\n aria-expanded={isOpen}\n onClick={onToggle}\n ref={refToggle}\n >\n {useFilter && isOpen && (\n <SelectFilter\n isFilterActive={isFilterActive}\n filterValue={filterValue}\n onChange={handleFilterChange}\n />\n )}\n {selectedOptionText ? (\n selectedOptionText\n ) : (\n <SelectedOption\n label={label}\n placeholder={placeholder}\n selectedItem={selectedItem}\n options={options}\n showSelectedItemIcon={showSelectedItemIcon}\n showUnselectedItemIcons={showUnselectedItemIcons}\n />\n )}\n <span className='select-toggle-actions'>\n <ClearButton showClear={useClear} selectedItem={selectedItem} onClear={handleClearSelectedItem} />\n <span className='caret' />\n </span>\n </button>\n );\n\n if (!inputAddon && !errorMessage && !warningMessage) {\n return toggleButton;\n }\n\n return (\n <WithFeedbackAndAddon\n bsSize={bsSize}\n inputAddon={inputAddon}\n errorMessage={errorMessage}\n warningMessage={warningMessage}\n messageWhiteSpace={messageWhiteSpace}\n >\n {toggleButton}\n </WithFeedbackAndAddon>\n );\n };\n\n const renderDropdownMenu = () => {\n // Start from the last tracked focus; only default to the first item when opened via keyboard and nothing is selected.\n let currentFocusedItemIndex = focusedItemIndex;\n\n // Do not auto-highlight a selected item on open; let keyboard navigation start from \"no focus\".\n // Only default to the first item when opened via keyboard and nothing was selected.\n if (keyboardUsed && !selectedItem) {\n currentFocusedItemIndex = 0;\n }\n\n return (\n <BaseSelectDropdown\n isOpen={isOpen}\n isLoading={isLoading}\n options={filteredOptions}\n focusedItemIndex={currentFocusedItemIndex}\n keyboardUsed={keyboardUsed}\n updateDOMValues={updateDOMValues}\n onSelect={onOptionChange}\n onClose={closeMenu}\n noItemMessage={noItemMessage}\n pullRight={pullRight}\n dropup={dropup}\n autoDropDirection={autoDropDirection}\n dropdownClassName={dropdownClassName}\n />\n );\n };\n\n const handleFilterChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n event.preventDefault();\n\n const targetFilterValue = event.currentTarget.value;\n\n // if cleared: reset to defaults and bail early\n if (targetFilterValue === '') {\n setIsFilterActive(false);\n setFilterValue('');\n setFilteredOptions(options);\n setKeyboardUsed(false);\n setFocusedItemIndex(DEFAULT_FOCUSED_ITEM_INDEX);\n return;\n }\n\n // otherwise: filter against the last known non-empty DOM snapshot\n const currentFilteredOptions = filterOptions(itemDOMValues, targetFilterValue, options);\n\n // highlight the first item of the search result if at least one item was found\n const newFocusedItemIndex = currentFilteredOptions.length > 0 ? 0 : DEFAULT_FOCUSED_ITEM_INDEX;\n\n setIsFilterActive(true);\n setFilterValue(targetFilterValue);\n setFilteredOptions(currentFilteredOptions);\n setKeyboardUsed(true);\n setFocusedItemIndex(newFocusedItemIndex);\n };\n\n const onOptionChange = (currentSelectedItem: T | undefined) => {\n setSelectedItem(currentSelectedItem || null);\n setIsFilterActive(false);\n setFilterValue('');\n setFilteredOptions(options);\n\n onChange(currentSelectedItem);\n\n closeMenu();\n };\n\n const onToggle = (event: React.MouseEvent<HTMLButtonElement>) => {\n // Don't toggle when component is disabled or\n // when filter is active, means entering some filter value\n // in order to avoid closing menu on space but allow to use it for filtering\n if (disabled || isFilterActive) {\n return;\n }\n\n // using the enter key on the toggle button will trigger a synthetic click event as all buttons are of\n // type submit by default in HTML. In order to differentiate between real click and a synthetic event\n // caused by they keyboard, use the event details. A synthetic event is always 0.\n const isKeyboardUsed = event.detail === 0;\n\n setIsOpen(!isOpen);\n setKeyboardUsed(isKeyboardUsed);\n };\n\n const closeMenu = () => {\n if (isOpen) {\n setIsOpen(false);\n setIsFilterActive(false);\n setFilterValue('');\n setFilteredOptions(options);\n setKeyboardUsed(false);\n setFocusedItemIndex(DEFAULT_FOCUSED_ITEM_INDEX);\n refToggle.current?.focus();\n }\n };\n\n const classes = classNames(\n 'select',\n 'dropdown',\n isOpen && 'open',\n hasError && 'has-error',\n variant === 'blank' && 'select-blank',\n className && className\n );\n\n return (\n <div {...remainingProps} className={classes} ref={mergedSelectRefs}>\n {renderToggle()}\n {renderDropdownMenu()}\n </div>\n );\n};\n\nexport default Select;\n"],"names":["DEFAULT_FOCUSED_ITEM_INDEX","Select","props","name","id","label","options","value","onChange","noop","placeholder","isLoading","dropup","pullRight","autoDropDirection","bsSize","variant","disabled","tabIndex","hasError","useFilter","useClear","noItemMessage","selectedOptionText","showSelectedItemIcon","showUnselectedItemIcons","dropdownClassName","btnClassName","className","inputAddon","errorMessage","warningMessage","messageWhiteSpace","remainingProps","isOpen","setIsOpen","useState","selectedItem","setSelectedItem","isFilterActive","setIsFilterActive","filterValue","setFilterValue","filteredOptions","setFilteredOptions","itemDOMValues","setItemDOMValues","focusedItemIndex","setFocusedItemIndex","keyboardUsed","setKeyboardUsed","refSelect","useRef","refToggle","ref","useClickOutside","closeMenu","mergedSelectRefs","useMergeRefs","updateSelectedItem","selectOptions","updatedValue","isEmpty","item","useEffectOnce","previousOptions","setPreviousOptions","isEqual","previousValue","setPreviousValue","updateDOMValues","itemDOMValuesToUpdated","handleClearSelectedItem","renderToggle","toggleClasses","classNames","toggleButton","jsxs","onToggle","jsx","SelectFilter","handleFilterChange","SelectedOption","ClearButton","WithFeedbackAndAddon","renderDropdownMenu","currentFocusedItemIndex","BaseSelectDropdown","onOptionChange","event","targetFilterValue","currentFilteredOptions","filterOptions","newFocusedItemIndex","currentSelectedItem","isKeyboardUsed","classes"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["../../../src/components/selects/Select.tsx"],"sourcesContent":["import type React from 'react';\nimport { useRef, useState } from 'react';\nimport { isEqual } from 'es-toolkit/predicate';\nimport { isEmpty, noop } from 'es-toolkit/compat';\n\nimport classNames from '../../utils/classNames';\nimport BaseSelectDropdown, { filterOptions, type OptionDOMValue, type SelectOption } from './BaseSelectDropdown';\nimport useClickOutside from '../../useClickOutside';\nimport useEffectOnce from '../../hooks/useEffectOnce';\nimport useMergeRefs from '../../hooks/useMergeRefs';\nimport type { TrackingAttributes } from '../../utils/analytics/googleAnalyticsUtils';\nimport ClearButton from './ClearButton';\nimport SelectFilter from './SelectFilter';\nimport SelectedOption from './SelectedOption';\nimport WithFeedbackAndAddon, { type WithFeedbackAndAddonProps } from './WithFeedbackAndAddon';\n\nexport type { SelectOption } from './BaseSelectDropdown';\n\nconst DEFAULT_FOCUSED_ITEM_INDEX = -1;\n\n/**\n * Note: Even with a pre-selected item, when it first opens the dropdown it renders the full options list,\n * not just the selected one. The filter is only usable while the dropdown is open.\n */\nexport type SelectProps<T extends SelectOption> = Omit<WithFeedbackAndAddonProps, 'bsSize'> & {\n /**\n * Passed through as HTML attribute to the toggle button.\n */\n name?: string;\n\n /**\n * Passed through as HTML attribute to the toggle button.\n *\n * @default Uses the value given to `name` if not provided explicitly.\n */\n id?: string;\n\n /**\n * The toggle label in front of the selected text.\n */\n label?: string | React.ReactNode;\n\n /**\n * Items to display in the dropdown menu.\n *\n * @default []\n */\n options?: T[];\n\n /**\n * Sets the ids of the selected options when the component is already mounted.\n */\n value?: string[];\n\n /**\n * Callback function triggered when an item is selected.\n *\n * @param selectedOption The option that was selected (or undefined if none was).\n *\n * @default () => {}\n */\n onChange?: (selectOption: T | undefined) => void;\n\n /**\n * Text to display when nothing is selected.\n */\n placeholder?: string | React.ReactNode;\n\n /**\n * Defines whether the dropdown opens upwards.\n *\n * Set to `true` additionally disables autoDrop feature.\n *\n * @default false\n */\n dropup?: boolean;\n\n /**\n * Defines whether the dropdown opens right aligned to the dropdown toggle.\n *\n * Set to 'true' additionally disables autoDrop feature.\n *\n * @default false\n */\n pullRight?: boolean;\n\n /**\n * Enables or disables the autoDrop positioning feature.\n *\n * When enabled, the option list opens below or above the input depending on the surrounding space.\n *\n * @default true\n */\n autoDropDirection?: boolean;\n\n /**\n * Defines the size of the select to be rendered.\n *\n * @default 'md'\n */\n bsSize?: 'sm' | 'md' | 'lg';\n\n /**\n * Defines the visual variant of the select.\n *\n * @default 'default'\n */\n variant?: 'default' | 'blank';\n\n /**\n * Option to disable the opening of the option list.\n *\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Sets the input's tabindex attribute.\n *\n * The tabindex attribute allows developers to make HTML elements focusable, allow or prevent them from being\n * sequentially focusable (usually with the Tab key, hence the name) and determine their relative ordering for\n * sequential focus navigation.\n *\n * @default 0\n */\n tabIndex?: number;\n\n /**\n * Defines whether the Bootstrap error classes shall be added to the toggle element.\n *\n * @default false\n */\n hasError?: boolean;\n\n /**\n * Defines whether the component should be filterable.\n *\n * @default false\n */\n useFilter?: boolean;\n\n /**\n * Set to show a clear button.\n *\n * @default false\n */\n useClear?: boolean;\n\n /**\n * Shows a loading spinner instead of the menu items if set to true.\n *\n * @default false\n */\n isLoading?: boolean;\n\n /**\n * Text that shall be shown when not match was found when filtering.\n */\n noItemMessage?: string | React.ReactNode;\n\n /**\n * Text or node to be rendered on the toggle select instead of the selected item label.\n */\n selectedOptionText?: string | React.ReactNode;\n\n /**\n * Set to show only the icon and not the label of selected item.\n *\n * @default false\n */\n showSelectedItemIcon?: boolean;\n\n /**\n * Set to show all item icons within the toggle element.\n *\n * Selected items are highlighted and unselected items are shown as inactive.\n *\n * @default false\n */\n showUnselectedItemIcons?: boolean;\n\n /**\n * Additional classes to be set to the dropdown.\n */\n dropdownClassName?: string;\n\n /**\n * Additional classes to be set to the select/input.\n */\n btnClassName?: string;\n\n /**\n * Additional classes to be set to the select wrapper.\n */\n className?: string;\n\n /**\n * Optional tracking attributes added to the toggle button.\n */\n trackingAttributes?: TrackingAttributes;\n};\n\nconst Select = <T extends SelectOption>(props: SelectProps<T>) => {\n const {\n name,\n id = name,\n label,\n options = [],\n value,\n onChange = noop,\n placeholder,\n isLoading = false,\n dropup = false,\n pullRight = false,\n autoDropDirection = true,\n bsSize = 'md',\n variant = 'default',\n disabled = false,\n tabIndex = 0,\n hasError = false,\n useFilter = false,\n useClear = false,\n noItemMessage,\n selectedOptionText,\n showSelectedItemIcon = false,\n showUnselectedItemIcons = false,\n dropdownClassName,\n btnClassName,\n className,\n trackingAttributes,\n\n inputAddon,\n errorMessage,\n warningMessage,\n messageWhiteSpace = 'normal',\n\n ...remainingProps\n } = props;\n\n const [isOpen, setIsOpen] = useState(false);\n const [selectedItem, setSelectedItem] = useState<SelectOption | null>(null);\n const [isFilterActive, setIsFilterActive] = useState(false);\n const [filterValue, setFilterValue] = useState('');\n const [filteredOptions, setFilteredOptions] = useState(options);\n const [itemDOMValues, setItemDOMValues] = useState<OptionDOMValue[]>([]);\n const [focusedItemIndex, setFocusedItemIndex] = useState(DEFAULT_FOCUSED_ITEM_INDEX);\n const [keyboardUsed, setKeyboardUsed] = useState(false);\n\n const refSelect = useRef();\n const refToggle = useRef<HTMLButtonElement>(null);\n\n const ref = useClickOutside(() => closeMenu());\n const mergedSelectRefs = useMergeRefs(refSelect, ref);\n\n const updateSelectedItem = (selectOptions: SelectOption[], updatedValue: string[] | undefined) => {\n if (updatedValue && !isEmpty(updatedValue)) {\n setSelectedItem(selectOptions.find(item => item.id === updatedValue[0]) || null);\n } else if (selectOptions) {\n setSelectedItem(selectOptions.find(item => item.selected) || null);\n }\n };\n\n useEffectOnce(() => {\n updateSelectedItem(options, value);\n });\n\n const [previousOptions, setPreviousOptions] = useState(options);\n if (!isEqual(options, previousOptions)) {\n updateSelectedItem(options, value);\n setFilteredOptions(options);\n setPreviousOptions(options);\n }\n\n const [previousValue, setPreviousValue] = useState(value);\n if (!isEqual(value, previousValue)) {\n updateSelectedItem(options, value);\n setPreviousValue(value);\n }\n\n const updateDOMValues = (itemDOMValuesToUpdated: OptionDOMValue[] = []) => {\n // Skip updates when we have nothing new, or when filtering is active and we already hold a full snapshot.\n if (!itemDOMValuesToUpdated.length) {\n return;\n }\n\n const shouldKeepPreviousSnapshot = (isFilterActive || filterValue) && itemDOMValues.length > 0;\n if (shouldKeepPreviousSnapshot) {\n return;\n }\n\n setItemDOMValues(itemDOMValuesToUpdated);\n };\n\n const handleClearSelectedItem = () => {\n setSelectedItem(null);\n setIsFilterActive(false);\n setFilterValue('');\n setFilteredOptions(options);\n setKeyboardUsed(false);\n setFocusedItemIndex(DEFAULT_FOCUSED_ITEM_INDEX);\n\n onChange(undefined);\n };\n\n const renderToggle = () => {\n const toggleClasses = classNames(\n 'dropdown-toggle',\n 'form-control',\n 'text-left',\n btnClassName && btnClassName,\n bsSize === 'sm' && 'input-sm',\n bsSize === 'lg' && 'input-lg',\n disabled && 'disabled'\n );\n\n const toggleButton = (\n <button\n type='button'\n id={id}\n name={name}\n className={toggleClasses}\n {...trackingAttributes}\n data-toggle='dropdown'\n tabIndex={tabIndex}\n aria-haspopup='true'\n aria-expanded={isOpen}\n onClick={onToggle}\n ref={refToggle}\n >\n {useFilter && isOpen && (\n <SelectFilter\n isFilterActive={isFilterActive}\n filterValue={filterValue}\n onChange={handleFilterChange}\n />\n )}\n {selectedOptionText ? (\n selectedOptionText\n ) : (\n <SelectedOption\n label={label}\n placeholder={placeholder}\n selectedItem={selectedItem}\n options={options}\n showSelectedItemIcon={showSelectedItemIcon}\n showUnselectedItemIcons={showUnselectedItemIcons}\n />\n )}\n <span className='select-toggle-actions'>\n <ClearButton showClear={useClear} selectedItem={selectedItem} onClear={handleClearSelectedItem} />\n <span className='caret' />\n </span>\n </button>\n );\n\n if (!inputAddon && !errorMessage && !warningMessage) {\n return toggleButton;\n }\n\n return (\n <WithFeedbackAndAddon\n bsSize={bsSize}\n inputAddon={inputAddon}\n errorMessage={errorMessage}\n warningMessage={warningMessage}\n messageWhiteSpace={messageWhiteSpace}\n >\n {toggleButton}\n </WithFeedbackAndAddon>\n );\n };\n\n const renderDropdownMenu = () => {\n // Start from the last tracked focus; only default to the first item when opened via keyboard and nothing is selected.\n let currentFocusedItemIndex = focusedItemIndex;\n\n // Do not auto-highlight a selected item on open; let keyboard navigation start from \"no focus\".\n // Only default to the first item when opened via keyboard and nothing was selected.\n if (keyboardUsed && !selectedItem) {\n currentFocusedItemIndex = 0;\n }\n\n return (\n <BaseSelectDropdown\n isOpen={isOpen}\n isLoading={isLoading}\n options={filteredOptions}\n focusedItemIndex={currentFocusedItemIndex}\n keyboardUsed={keyboardUsed}\n updateDOMValues={updateDOMValues}\n onSelect={onOptionChange}\n onClose={closeMenu}\n noItemMessage={noItemMessage}\n pullRight={pullRight}\n dropup={dropup}\n autoDropDirection={autoDropDirection}\n dropdownClassName={dropdownClassName}\n />\n );\n };\n\n const handleFilterChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n event.preventDefault();\n\n const targetFilterValue = event.currentTarget.value;\n\n // if cleared: reset to defaults and bail early\n if (targetFilterValue === '') {\n setIsFilterActive(false);\n setFilterValue('');\n setFilteredOptions(options);\n setKeyboardUsed(false);\n setFocusedItemIndex(DEFAULT_FOCUSED_ITEM_INDEX);\n return;\n }\n\n // otherwise: filter against the last known non-empty DOM snapshot\n const currentFilteredOptions = filterOptions(itemDOMValues, targetFilterValue, options);\n\n // highlight the first item of the search result if at least one item was found\n const newFocusedItemIndex = currentFilteredOptions.length > 0 ? 0 : DEFAULT_FOCUSED_ITEM_INDEX;\n\n setIsFilterActive(true);\n setFilterValue(targetFilterValue);\n setFilteredOptions(currentFilteredOptions);\n setKeyboardUsed(true);\n setFocusedItemIndex(newFocusedItemIndex);\n };\n\n const onOptionChange = (currentSelectedItem: T | undefined) => {\n setSelectedItem(currentSelectedItem || null);\n setIsFilterActive(false);\n setFilterValue('');\n setFilteredOptions(options);\n\n onChange(currentSelectedItem);\n\n closeMenu();\n };\n\n const onToggle = (event: React.MouseEvent<HTMLButtonElement>) => {\n // Don't toggle when component is disabled or\n // when filter is active, means entering some filter value\n // in order to avoid closing menu on space but allow to use it for filtering\n if (disabled || isFilterActive) {\n return;\n }\n\n // using the enter key on the toggle button will trigger a synthetic click event as all buttons are of\n // type submit by default in HTML. In order to differentiate between real click and a synthetic event\n // caused by they keyboard, use the event details. A synthetic event is always 0.\n const isKeyboardUsed = event.detail === 0;\n\n setIsOpen(!isOpen);\n setKeyboardUsed(isKeyboardUsed);\n };\n\n const closeMenu = () => {\n if (isOpen) {\n setIsOpen(false);\n setIsFilterActive(false);\n setFilterValue('');\n setFilteredOptions(options);\n setKeyboardUsed(false);\n setFocusedItemIndex(DEFAULT_FOCUSED_ITEM_INDEX);\n refToggle.current?.focus();\n }\n };\n\n const classes = classNames(\n 'select',\n 'dropdown',\n isOpen && 'open',\n hasError && 'has-error',\n variant === 'blank' && 'select-blank',\n className && className\n );\n\n return (\n <div {...remainingProps} className={classes} ref={mergedSelectRefs}>\n {renderToggle()}\n {renderDropdownMenu()}\n </div>\n );\n};\n\nexport default Select;\n"],"names":["DEFAULT_FOCUSED_ITEM_INDEX","Select","props","name","id","label","options","value","onChange","noop","placeholder","isLoading","dropup","pullRight","autoDropDirection","bsSize","variant","disabled","tabIndex","hasError","useFilter","useClear","noItemMessage","selectedOptionText","showSelectedItemIcon","showUnselectedItemIcons","dropdownClassName","btnClassName","className","trackingAttributes","inputAddon","errorMessage","warningMessage","messageWhiteSpace","remainingProps","isOpen","setIsOpen","useState","selectedItem","setSelectedItem","isFilterActive","setIsFilterActive","filterValue","setFilterValue","filteredOptions","setFilteredOptions","itemDOMValues","setItemDOMValues","focusedItemIndex","setFocusedItemIndex","keyboardUsed","setKeyboardUsed","refSelect","useRef","refToggle","ref","useClickOutside","closeMenu","mergedSelectRefs","useMergeRefs","updateSelectedItem","selectOptions","updatedValue","isEmpty","item","useEffectOnce","previousOptions","setPreviousOptions","isEqual","previousValue","setPreviousValue","updateDOMValues","itemDOMValuesToUpdated","handleClearSelectedItem","renderToggle","toggleClasses","classNames","toggleButton","jsxs","onToggle","jsx","SelectFilter","handleFilterChange","SelectedOption","ClearButton","WithFeedbackAndAddon","renderDropdownMenu","currentFocusedItemIndex","BaseSelectDropdown","onOptionChange","event","targetFilterValue","currentFilteredOptions","filterOptions","newFocusedItemIndex","currentSelectedItem","isKeyboardUsed","classes"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { jsxs as c, Fragment as G, jsx as s } from "react/jsx-runtime";
2
- import { useState as i, useRef as P, useEffect as b } from "react";
1
+ import { jsxs as c, Fragment as P, jsx as s } from "react/jsx-runtime";
2
+ import { useState as i, useRef as V, useEffect as b } from "react";
3
3
  import { motion as We } from "motion/react";
4
4
  import { noop as p } from "es-toolkit/function";
5
- import { toNumber as V } from "es-toolkit/compat";
5
+ import { toNumber as j } from "es-toolkit/compat";
6
6
  import m from "../../utils/classNames.js";
7
7
  import Oe from "./SidebarFooter.js";
8
8
  import ge from "./SidebarBackdrop.js";
@@ -13,7 +13,7 @@ import He from "../../hooks/useWindowResize.js";
13
13
  import Be from "../../hooks/useEsc.js";
14
14
  import ke from "../../utils/getWidthInBoundaries.js";
15
15
  import xe from "../smoothScrollbars/SmoothScrollbars.js";
16
- const Ue = 350, Ae = 100, Ye = 800, j = 0, Ge = 400, Pe = 800, Ve = 0.14, je = 500, C = {
16
+ const Ue = 350, Ae = 100, Ye = 800, X = 0, Ge = 400, Pe = 800, Ve = 0.14, je = 500, C = {
17
17
  LEFT: "left",
18
18
  RIGHT: "right"
19
19
  }, D = {
@@ -37,13 +37,13 @@ const Ue = 350, Ae = 100, Ye = 800, j = 0, Ge = 400, Pe = 800, Ve = 0.14, je = 5
37
37
  const {
38
38
  fly: r = !1,
39
39
  closed: o = !1,
40
- title: X = "",
40
+ title: F = "",
41
41
  footer: Z,
42
42
  resizable: q = !1,
43
- position: F,
43
+ position: R,
44
44
  width: l = Ue,
45
45
  minWidth: K = Ae,
46
- maxWidth: R = Ye,
46
+ maxWidth: M = Ye,
47
47
  hasBackdrop: J = !1,
48
48
  hasSmoothScrollbar: Q = !1,
49
49
  makeBackdropVisible: $ = !1,
@@ -51,13 +51,13 @@ const Ue = 350, Ae = 100, Ye = 800, j = 0, Ge = 400, Pe = 800, Ve = 0.14, je = 5
51
51
  fullscreenToggleTooltip: ee,
52
52
  openInFullscreen: se = !1,
53
53
  showHeaderBorder: te = !1,
54
- disableClose: M = !1,
55
- bodyRef: _,
56
- headerButtons: w,
57
- switchModeBreakpoint: y = j,
54
+ disableClose: _ = !1,
55
+ bodyRef: w,
56
+ headerButtons: y,
57
+ switchModeBreakpoint: W = X,
58
58
  onClose: oe = p,
59
59
  onResizeEnd: ie = p,
60
- onFullScreenChange: W = p,
60
+ onFullScreenChange: O = p,
61
61
  onBackdropClick: ne = p,
62
62
  disableEsc: re = !1,
63
63
  titleClassName: ae = "",
@@ -66,49 +66,49 @@ const Ue = 350, Ae = 100, Ye = 800, j = 0, Ge = 400, Pe = 800, Ve = 0.14, je = 5
66
66
  footerClassName: ce = "",
67
67
  backdropClassName: me = "",
68
68
  className: fe = "",
69
- children: O,
69
+ children: g,
70
70
  ...ue
71
- } = n, [he, g] = i(V(l)), [S, v] = i(r ? t.MODE_FLY : t.MODE_FLUID), [a, z] = i(se), [be, H] = i(!1), [I, pe] = i(!1), [N, Ee] = i(F === C.RIGHT), f = P(null), B = P(null);
71
+ } = n, [he, v] = i(j(l)), [S, z] = i(r ? t.MODE_FLY : t.MODE_FLUID), [a, H] = i(se), [be, B] = i(!1), [I, pe] = i(!1), [N, Ee] = i(R === C.RIGHT), f = V(null), k = V(null);
72
72
  b(() => {
73
73
  f.current && S === t.MODE_FLY && f.current.parentNode?.className.includes("right") && Ee(!0);
74
74
  }, [f.current, S]);
75
- const [k, Te] = i(o);
76
- k !== o && Te(o);
75
+ const [x, Te] = i(o);
76
+ x !== o && Te(o);
77
77
  const [Se, Ie] = i(l);
78
- Se !== l && (console.log("update internal width"), g(V(l)), Ie(l)), He(() => u(), je), b(() => u(), []), b(() => {
78
+ Se !== l && (console.log("update internal width"), v(j(l)), Ie(l)), He(() => u(), je), b(() => u(), []), b(() => {
79
79
  o || setTimeout(() => u());
80
80
  }, [o]), b(() => {
81
81
  const e = document.querySelector(".module-content");
82
- e && (B.current = e);
82
+ e && (k.current = e);
83
83
  }, []), Be(() => {
84
- !re && T && a && (z(!1), W(!1));
84
+ !re && T && a && (H(!1), O(!1));
85
85
  });
86
86
  const u = () => {
87
- const e = B.current?.clientWidth;
88
- if (r || y === j)
87
+ const e = k.current?.clientWidth;
88
+ if (r || W === X)
89
89
  return;
90
- const L = e && e <= Ge, d = e && e > Pe, h = window.innerWidth <= y;
90
+ const L = e && e <= Ge, d = e && e > Pe, h = window.innerWidth <= W;
91
91
  if (L || h) {
92
- v(t.MODE_FLY);
92
+ z(t.MODE_FLY);
93
93
  return;
94
94
  }
95
95
  if (d && !h) {
96
- v(t.MODE_FLUID);
96
+ z(t.MODE_FLUID);
97
97
  return;
98
98
  }
99
99
  }, Ne = (e) => {
100
- const L = I, d = window.innerWidth * 0.5, h = R || d;
101
- g((A) => {
102
- const ye = F === t.RIGHT ? A + e : A - e, Y = ke(K, h, ye);
103
- return pe(Y === d), L && !I ? d : Y;
100
+ const L = I, d = window.innerWidth * 0.5, h = M || d;
101
+ v((Y) => {
102
+ const ye = R === t.RIGHT ? Y + e : Y - e, G = ke(K, h, ye);
103
+ return pe(G === d), L && !I ? d : G;
104
104
  }), u();
105
105
  }, Le = () => {
106
- document.body?.classList.add("pointer-events-none"), H(!0);
106
+ document.body?.classList.add("pointer-events-none"), B(!0);
107
107
  }, Ce = () => {
108
- document.body?.classList.remove("pointer-events-none"), H(!1), ie();
108
+ document.body?.classList.remove("pointer-events-none"), B(!1), ie();
109
109
  }, De = () => {
110
110
  const e = !a;
111
- z(e), W(e);
111
+ H(e), O(e);
112
112
  }, Fe = m(
113
113
  "Sidebar",
114
114
  fe,
@@ -116,13 +116,13 @@ const Ue = 350, Ae = 100, Ye = 800, j = 0, Ge = 400, Pe = 800, Ve = 0.14, je = 5
116
116
  a && "width-100vw sidebar-fullscreen",
117
117
  I && !a && "max-width-50vw width-50vw",
118
118
  S === D.MODE_FLY || a ? "fly" : "fluid"
119
- ), Re = m("SidebarHeader", de, te && "show-border"), Me = m("SidebarTitle", ae), x = m("SidebarBody", le), _e = m("SidebarResizeLimit", be && "display-block"), U = R || window.innerWidth * 0.5, we = /* @__PURE__ */ c(G, { children: [
120
- /* @__PURE__ */ s("div", { className: _e, style: N ? { right: U } : { left: U } }),
119
+ ), Re = m("SidebarHeader", de, te && "show-border"), Me = m("SidebarTitle", ae), U = m("SidebarBody", le), _e = m("SidebarResizeLimit", be && "display-block"), A = M || window.innerWidth * 0.5, we = /* @__PURE__ */ c(P, { children: [
120
+ /* @__PURE__ */ s("div", { className: _e, style: N ? { right: A } : { left: A } }),
121
121
  /* @__PURE__ */ c("div", { className: "SidebarContent", children: [
122
122
  /* @__PURE__ */ c("div", { className: Re, children: [
123
- /* @__PURE__ */ s("div", { className: Me, children: X }),
123
+ /* @__PURE__ */ s("div", { className: Me, children: F }),
124
124
  /* @__PURE__ */ c("div", { className: "SidebarButtons non-printable close", children: [
125
- w,
125
+ y,
126
126
  T && /* @__PURE__ */ s(
127
127
  ve,
128
128
  {
@@ -131,11 +131,11 @@ const Ue = 350, Ae = 100, Ye = 800, j = 0, Ge = 400, Pe = 800, Ve = 0.14, je = 5
131
131
  tooltip: ee
132
132
  }
133
133
  ),
134
- !M && (w || T) && /* @__PURE__ */ s("div", { className: "SidebarButtons-spacer" }),
135
- !M && /* @__PURE__ */ s(ze, { onClick: oe })
134
+ !_ && (y || T) && /* @__PURE__ */ s("div", { className: "SidebarButtons-spacer" }),
135
+ !_ && /* @__PURE__ */ s(ze, { title: F, onClick: oe })
136
136
  ] })
137
137
  ] }),
138
- Q ? /* @__PURE__ */ s(xe, { slideIn: !0, className: x, ref: _, children: O }) : /* @__PURE__ */ s("div", { className: x, ref: _, children: O }),
138
+ Q ? /* @__PURE__ */ s(xe, { slideIn: !0, className: U, ref: w, children: g }) : /* @__PURE__ */ s("div", { className: U, ref: w, children: g }),
139
139
  /* @__PURE__ */ s(Oe, { footer: Z, className: ce })
140
140
  ] }),
141
141
  q && /* @__PURE__ */ s(
@@ -149,12 +149,12 @@ const Ue = 350, Ae = 100, Ye = 800, j = 0, Ge = 400, Pe = 800, Ve = 0.14, je = 5
149
149
  }
150
150
  )
151
151
  ] });
152
- return /* @__PURE__ */ c(G, { children: [
152
+ return /* @__PURE__ */ c(P, { children: [
153
153
  /* @__PURE__ */ s(
154
154
  We.div,
155
155
  {
156
156
  ...ue,
157
- initial: k && "sidebarEnter",
157
+ initial: x && "sidebarEnter",
158
158
  animate: "sidebarVisible",
159
159
  exit: "sidebarExit",
160
160
  variants: Xe,