@helpwave/hightide 0.1.37 → 0.1.39

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 (144) hide show
  1. package/dist/components/date/DatePicker.js.map +1 -1
  2. package/dist/components/date/DatePicker.mjs.map +1 -1
  3. package/dist/components/date/DayPicker.js.map +1 -1
  4. package/dist/components/date/DayPicker.mjs.map +1 -1
  5. package/dist/components/date/TimeDisplay.js.map +1 -1
  6. package/dist/components/date/TimeDisplay.mjs.map +1 -1
  7. package/dist/components/date/YearMonthPicker.js.map +1 -1
  8. package/dist/components/date/YearMonthPicker.mjs.map +1 -1
  9. package/dist/components/date/index.js.map +1 -1
  10. package/dist/components/date/index.mjs.map +1 -1
  11. package/dist/components/dialog/ConfirmDialog.js +15 -9
  12. package/dist/components/dialog/ConfirmDialog.js.map +1 -1
  13. package/dist/components/dialog/ConfirmDialog.mjs +16 -10
  14. package/dist/components/dialog/ConfirmDialog.mjs.map +1 -1
  15. package/dist/components/dialog/Dialog.d.mts +4 -5
  16. package/dist/components/dialog/Dialog.d.ts +4 -5
  17. package/dist/components/dialog/Dialog.js +15 -9
  18. package/dist/components/dialog/Dialog.js.map +1 -1
  19. package/dist/components/dialog/Dialog.mjs +16 -10
  20. package/dist/components/dialog/Dialog.mjs.map +1 -1
  21. package/dist/components/dialog/DiscardChangesDialog.js +15 -9
  22. package/dist/components/dialog/DiscardChangesDialog.js.map +1 -1
  23. package/dist/components/dialog/DiscardChangesDialog.mjs +16 -10
  24. package/dist/components/dialog/DiscardChangesDialog.mjs.map +1 -1
  25. package/dist/components/dialog/InputDialog.js +15 -9
  26. package/dist/components/dialog/InputDialog.js.map +1 -1
  27. package/dist/components/dialog/InputDialog.mjs +16 -10
  28. package/dist/components/dialog/InputDialog.mjs.map +1 -1
  29. package/dist/components/dialog/LanguageDialog.js +188 -154
  30. package/dist/components/dialog/LanguageDialog.js.map +1 -1
  31. package/dist/components/dialog/LanguageDialog.mjs +151 -116
  32. package/dist/components/dialog/LanguageDialog.mjs.map +1 -1
  33. package/dist/components/dialog/ThemeDialog.js +191 -157
  34. package/dist/components/dialog/ThemeDialog.js.map +1 -1
  35. package/dist/components/dialog/ThemeDialog.mjs +151 -116
  36. package/dist/components/dialog/ThemeDialog.mjs.map +1 -1
  37. package/dist/components/dialog/index.js +205 -171
  38. package/dist/components/dialog/index.js.map +1 -1
  39. package/dist/components/dialog/index.mjs +152 -117
  40. package/dist/components/dialog/index.mjs.map +1 -1
  41. package/dist/components/index.js +337 -299
  42. package/dist/components/index.js.map +1 -1
  43. package/dist/components/index.mjs +198 -159
  44. package/dist/components/index.mjs.map +1 -1
  45. package/dist/components/layout/Carousel.d.mts +2 -1
  46. package/dist/components/layout/Carousel.d.ts +2 -1
  47. package/dist/components/layout/Carousel.js +4 -0
  48. package/dist/components/layout/Carousel.js.map +1 -1
  49. package/dist/components/layout/Carousel.mjs +4 -0
  50. package/dist/components/layout/Carousel.mjs.map +1 -1
  51. package/dist/components/layout/TextImage.js.map +1 -1
  52. package/dist/components/layout/TextImage.mjs.map +1 -1
  53. package/dist/components/layout/index.js +4 -0
  54. package/dist/components/layout/index.js.map +1 -1
  55. package/dist/components/layout/index.mjs +4 -0
  56. package/dist/components/layout/index.mjs.map +1 -1
  57. package/dist/components/loading-states/ErrorComponent.js.map +1 -1
  58. package/dist/components/loading-states/ErrorComponent.mjs.map +1 -1
  59. package/dist/components/loading-states/LoadingAnimation.js.map +1 -1
  60. package/dist/components/loading-states/LoadingAnimation.mjs.map +1 -1
  61. package/dist/components/loading-states/index.js.map +1 -1
  62. package/dist/components/loading-states/index.mjs.map +1 -1
  63. package/dist/components/navigation/Pagination.js.map +1 -1
  64. package/dist/components/navigation/Pagination.mjs.map +1 -1
  65. package/dist/components/navigation/StepperBar.js.map +1 -1
  66. package/dist/components/navigation/StepperBar.mjs.map +1 -1
  67. package/dist/components/navigation/index.js.map +1 -1
  68. package/dist/components/navigation/index.mjs.map +1 -1
  69. package/dist/components/properties/CheckboxProperty.js.map +1 -1
  70. package/dist/components/properties/CheckboxProperty.mjs.map +1 -1
  71. package/dist/components/properties/DateProperty.js.map +1 -1
  72. package/dist/components/properties/DateProperty.mjs.map +1 -1
  73. package/dist/components/properties/MultiSelectProperty.js +129 -101
  74. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  75. package/dist/components/properties/MultiSelectProperty.mjs +131 -102
  76. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -1
  77. package/dist/components/properties/NumberProperty.js.map +1 -1
  78. package/dist/components/properties/NumberProperty.mjs.map +1 -1
  79. package/dist/components/properties/PropertyBase.js.map +1 -1
  80. package/dist/components/properties/PropertyBase.mjs.map +1 -1
  81. package/dist/components/properties/SelectProperty.js +129 -101
  82. package/dist/components/properties/SelectProperty.js.map +1 -1
  83. package/dist/components/properties/SelectProperty.mjs +131 -102
  84. package/dist/components/properties/SelectProperty.mjs.map +1 -1
  85. package/dist/components/properties/TextProperty.js.map +1 -1
  86. package/dist/components/properties/TextProperty.mjs.map +1 -1
  87. package/dist/components/properties/index.js +129 -101
  88. package/dist/components/properties/index.js.map +1 -1
  89. package/dist/components/properties/index.mjs +131 -102
  90. package/dist/components/properties/index.mjs.map +1 -1
  91. package/dist/components/table/Table.js.map +1 -1
  92. package/dist/components/table/Table.mjs.map +1 -1
  93. package/dist/components/table/TableFilterButton.js.map +1 -1
  94. package/dist/components/table/TableFilterButton.mjs.map +1 -1
  95. package/dist/components/table/index.js.map +1 -1
  96. package/dist/components/table/index.mjs.map +1 -1
  97. package/dist/components/user-action/CopyToClipboardWrapper.js.map +1 -1
  98. package/dist/components/user-action/CopyToClipboardWrapper.mjs.map +1 -1
  99. package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
  100. package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -1
  101. package/dist/components/user-action/SearchBar.js.map +1 -1
  102. package/dist/components/user-action/SearchBar.mjs.map +1 -1
  103. package/dist/components/user-action/index.js +129 -101
  104. package/dist/components/user-action/index.js.map +1 -1
  105. package/dist/components/user-action/index.mjs +131 -102
  106. package/dist/components/user-action/index.mjs.map +1 -1
  107. package/dist/components/user-action/select/Select.d.mts +2 -0
  108. package/dist/components/user-action/select/Select.d.ts +2 -0
  109. package/dist/components/user-action/select/Select.js +129 -101
  110. package/dist/components/user-action/select/Select.js.map +1 -1
  111. package/dist/components/user-action/select/Select.mjs +131 -102
  112. package/dist/components/user-action/select/Select.mjs.map +1 -1
  113. package/dist/components/user-action/select/index.js +129 -101
  114. package/dist/components/user-action/select/index.js.map +1 -1
  115. package/dist/components/user-action/select/index.mjs +131 -102
  116. package/dist/components/user-action/select/index.mjs.map +1 -1
  117. package/dist/hooks/index.js.map +1 -1
  118. package/dist/hooks/index.mjs.map +1 -1
  119. package/dist/hooks/useValidators.js.map +1 -1
  120. package/dist/hooks/useValidators.mjs.map +1 -1
  121. package/dist/index.js +362 -324
  122. package/dist/index.js.map +1 -1
  123. package/dist/index.mjs +206 -167
  124. package/dist/index.mjs.map +1 -1
  125. package/dist/localization/LanguageProvider.js +1 -1
  126. package/dist/localization/LanguageProvider.js.map +1 -1
  127. package/dist/localization/LanguageProvider.mjs +1 -1
  128. package/dist/localization/LanguageProvider.mjs.map +1 -1
  129. package/dist/localization/index.js +1 -1
  130. package/dist/localization/index.js.map +1 -1
  131. package/dist/localization/index.mjs +1 -1
  132. package/dist/localization/index.mjs.map +1 -1
  133. package/dist/localization/useTranslation.js.map +1 -1
  134. package/dist/localization/useTranslation.mjs.map +1 -1
  135. package/dist/style/globals.css +0 -3
  136. package/dist/theming/index.js +1 -1
  137. package/dist/theming/index.js.map +1 -1
  138. package/dist/theming/index.mjs +1 -1
  139. package/dist/theming/index.mjs.map +1 -1
  140. package/dist/theming/useTheme.js +1 -1
  141. package/dist/theming/useTheme.js.map +1 -1
  142. package/dist/theming/useTheme.mjs +1 -1
  143. package/dist/theming/useTheme.mjs.map +1 -1
  144. package/package.json +1 -1
@@ -871,7 +871,7 @@ function useFloatingElement({
871
871
  var import_react_dom = require("react-dom");
872
872
  var import_jsx_runtime5 = require("react/jsx-runtime");
873
873
  var defaultToggleOpenOptions = {
874
- highlightStartPosition: "first"
874
+ highlightStartPositionBehavior: "first"
875
875
  };
876
876
  var SelectContext = (0, import_react9.createContext)(null);
877
877
  function useSelectContext() {
@@ -894,47 +894,62 @@ var SelectRoot = ({
894
894
  isMultiSelect = false,
895
895
  iconAppearance = "left"
896
896
  }) => {
897
- const [options, setOptions] = (0, import_react9.useState)([]);
898
897
  const triggerRef = (0, import_react9.useRef)(null);
899
898
  const generatedId = (0, import_react9.useId)();
900
899
  const usedId = id ?? generatedId;
901
900
  const [internalState, setInternalState] = (0, import_react9.useState)({
902
- isOpen
901
+ isOpen,
902
+ options: []
903
903
  });
904
- const selectedValues = isMultiSelect ? values ?? [] : [value].filter(Boolean);
904
+ const selectedValues = (0, import_react9.useMemo)(
905
+ () => isMultiSelect ? values ?? [] : [value].filter(Boolean),
906
+ [isMultiSelect, value, values]
907
+ );
908
+ const selectedOptions = (0, import_react9.useMemo)(
909
+ () => selectedValues.map((value2) => internalState.options.find((option) => value2 === option.value)).filter(Boolean),
910
+ [selectedValues, internalState.options]
911
+ );
905
912
  const state = {
906
913
  ...internalState,
907
914
  id: usedId,
908
915
  disabled,
909
916
  invalid,
910
917
  value: selectedValues,
911
- options,
912
- selectedOptions: selectedValues.map((value2) => options.find((option) => value2 === option.value)).filter(Boolean)
918
+ selectedOptions
913
919
  };
914
920
  const config = {
915
921
  isMultiSelect,
916
922
  iconAppearance
917
923
  };
918
924
  const registerItem = (0, import_react9.useCallback)((item) => {
919
- setOptions((prev) => {
920
- const updated = [...prev, item];
921
- updated.sort((a, b) => {
925
+ setInternalState((prev) => {
926
+ const updatedOptions = [...prev.options, item];
927
+ updatedOptions.sort((a, b) => {
922
928
  const aEl = a.ref.current;
923
929
  const bEl = b.ref.current;
924
930
  if (!aEl || !bEl) return 0;
925
931
  return aEl.compareDocumentPosition(bEl) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;
926
932
  });
927
- return updated;
933
+ return {
934
+ ...prev,
935
+ options: updatedOptions
936
+ };
928
937
  });
929
938
  }, []);
930
939
  const unregisterItem = (0, import_react9.useCallback)((value2) => {
931
- setOptions((prev) => prev.filter((i) => i.value !== value2));
940
+ setInternalState((prev) => {
941
+ const updatedOptions = prev.options.filter((i) => i.value !== value2);
942
+ return {
943
+ ...prev,
944
+ options: updatedOptions
945
+ };
946
+ });
932
947
  }, []);
933
948
  const toggleSelection = (value2, isSelected) => {
934
949
  if (disabled) {
935
950
  return;
936
951
  }
937
- const option = options.find((i) => i.value === value2);
952
+ const option = state.options.find((i) => i.value === value2);
938
953
  if (!option) {
939
954
  console.error(`SelectOption with value: ${value2} not found`);
940
955
  return;
@@ -977,35 +992,40 @@ var SelectRoot = ({
977
992
  triggerRef.current = null;
978
993
  }, []);
979
994
  const toggleOpen = (isOpen2, toggleOpenOptions) => {
980
- const { highlightStartPosition } = { ...defaultToggleOpenOptions, ...toggleOpenOptions };
981
- let highlightedIndex;
982
- if (highlightStartPosition === "first") {
983
- highlightedIndex = options.findIndex((option) => !option.disabled);
984
- } else {
985
- highlightedIndex = options.length - 1 - [...options].reverse().findIndex((option) => !option.disabled);
986
- }
987
- if (highlightedIndex === -1 || highlightedIndex === options.length) {
988
- highlightedIndex = 0;
995
+ const { highlightStartPositionBehavior } = { ...defaultToggleOpenOptions, ...toggleOpenOptions };
996
+ let firstSelectedValue;
997
+ let firstEnabledValue;
998
+ for (let i = 0; i < state.options.length; i++) {
999
+ const currentOption = state.options[highlightStartPositionBehavior === "first" ? i : state.options.length - i - 1];
1000
+ if (!currentOption.disabled) {
1001
+ if (!firstEnabledValue) {
1002
+ firstEnabledValue = currentOption.value;
1003
+ }
1004
+ if (selectedValues.includes(currentOption.value)) {
1005
+ firstSelectedValue = currentOption.value;
1006
+ break;
1007
+ }
1008
+ }
989
1009
  }
990
1010
  setInternalState((prevState) => ({
991
1011
  ...prevState,
992
1012
  isOpen: isOpen2 ?? !prevState.isOpen,
993
- highlightedValue: options[highlightedIndex].value
1013
+ highlightedValue: firstSelectedValue ?? firstEnabledValue
994
1014
  }));
995
1015
  };
996
1016
  const moveHighlightedIndex = (delta) => {
997
- let highlightedIndex = options.findIndex((value2) => value2.value === internalState.highlightedValue);
1017
+ let highlightedIndex = state.options.findIndex((value2) => value2.value === internalState.highlightedValue);
998
1018
  if (highlightedIndex === -1) {
999
1019
  highlightedIndex = 0;
1000
1020
  }
1001
- const optionLength = options.length;
1021
+ const optionLength = state.options.length;
1002
1022
  const startIndex = (highlightedIndex + delta % optionLength + optionLength) % optionLength;
1003
1023
  const isForward = delta >= 0;
1004
- let highlightedValue = options[startIndex].value;
1005
- for (let i = 0; i < options.length; i++) {
1024
+ let highlightedValue = state.options[startIndex].value;
1025
+ for (let i = 0; i < state.options.length; i++) {
1006
1026
  const index = (startIndex + (isForward ? i : -i) + optionLength) % optionLength;
1007
- if (!options[index].disabled) {
1008
- highlightedValue = options[index].value;
1027
+ if (!state.options[index].disabled) {
1028
+ highlightedValue = state.options[index].value;
1009
1029
  break;
1010
1030
  }
1011
1031
  }
@@ -1016,9 +1036,9 @@ var SelectRoot = ({
1016
1036
  };
1017
1037
  (0, import_react9.useEffect)(() => {
1018
1038
  if (!internalState.highlightedValue) return;
1019
- const highlighted = options.find((value2) => value2.value === internalState.highlightedValue);
1039
+ const highlighted = internalState.options.find((value2) => value2.value === internalState.highlightedValue);
1020
1040
  if (highlighted) {
1021
- highlighted.ref.current.scrollIntoView({ behavior: "instant", block: "nearest" });
1041
+ highlighted.ref.current?.scrollIntoView({ behavior: "instant", block: "nearest" });
1022
1042
  } else {
1023
1043
  console.error(`SelectRoot: Could not find highlighted value (${internalState.highlightedValue})`);
1024
1044
  }
@@ -1155,12 +1175,12 @@ var SelectButton = (0, import_react9.forwardRef)(function SelectButton2({ placeh
1155
1175
  props.onKeyDown?.(event);
1156
1176
  switch (event.key) {
1157
1177
  case "ArrowDown":
1158
- toggleOpen(true, { highlightStartPosition: "first" });
1178
+ toggleOpen(true, { highlightStartPositionBehavior: "first" });
1159
1179
  event.preventDefault();
1160
1180
  event.stopPropagation();
1161
1181
  break;
1162
1182
  case "ArrowUp":
1163
- toggleOpen(true, { highlightStartPosition: "last" });
1183
+ toggleOpen(true, { highlightStartPositionBehavior: "last" });
1164
1184
  event.preventDefault();
1165
1185
  event.stopPropagation();
1166
1186
  break;
@@ -1254,10 +1274,10 @@ var SelectChipDisplay = (0, import_react9.forwardRef)(function SelectChipDisplay
1254
1274
  onKeyDown: (event) => {
1255
1275
  switch (event.key) {
1256
1276
  case "ArrowDown":
1257
- toggleOpen(true, { highlightStartPosition: "first" });
1277
+ toggleOpen(true, { highlightStartPositionBehavior: "first" });
1258
1278
  break;
1259
1279
  case "ArrowUp":
1260
- toggleOpen(true, { highlightStartPosition: "last" });
1280
+ toggleOpen(true, { highlightStartPositionBehavior: "last" });
1261
1281
  }
1262
1282
  },
1263
1283
  size: "small",
@@ -1278,6 +1298,7 @@ var SelectContent = (0, import_react9.forwardRef)(
1278
1298
  function SelectContent2({
1279
1299
  alignment,
1280
1300
  orientation = "vertical",
1301
+ containerClassName,
1281
1302
  ...props
1282
1303
  }, ref) {
1283
1304
  const innerRef = (0, import_react9.useRef)(null);
@@ -1294,76 +1315,83 @@ var SelectContent = (0, import_react9.forwardRef)(
1294
1315
  active: state.isOpen && !!position
1295
1316
  });
1296
1317
  return (0, import_react_dom.createPortal)(
1297
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
1298
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1299
- "div",
1300
- {
1301
- hidden: !state.isOpen,
1302
- onClick: () => trigger.toggleOpen(false),
1303
- className: (0, import_clsx4.default)("fixed w-screen h-screen inset-0")
1304
- }
1305
- ),
1306
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1307
- "ul",
1308
- {
1309
- ...props,
1310
- id: `${state.id}-listbox`,
1311
- ref: innerRef,
1312
- hidden: !state.isOpen,
1313
- onKeyDown: (event) => {
1314
- switch (event.key) {
1315
- case "Escape":
1316
- trigger.toggleOpen(false);
1317
- event.preventDefault();
1318
- event.stopPropagation();
1319
- break;
1320
- case match(orientation, {
1321
- vertical: "ArrowDown",
1322
- horizontal: "ArrowUp"
1323
- }):
1324
- item.moveHighlightedIndex(1);
1325
- event.preventDefault();
1326
- break;
1327
- case match(orientation, {
1328
- vertical: "ArrowUp",
1329
- horizontal: "ArrowDown"
1330
- }):
1331
- item.moveHighlightedIndex(-1);
1332
- event.preventDefault();
1333
- break;
1334
- case "Home":
1335
- event.preventDefault();
1336
- break;
1337
- case "End":
1338
- event.preventDefault();
1339
- break;
1340
- case "Enter":
1341
- // Fall through
1342
- case " ":
1343
- if (state.highlightedValue) {
1344
- item.toggleSelection(state.highlightedValue);
1345
- if (!config.isMultiSelect) {
1318
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
1319
+ "div",
1320
+ {
1321
+ id: `select-container-${state.id}`,
1322
+ className: (0, import_clsx4.default)("fixed inset-0 w-screen h-screen", containerClassName),
1323
+ hidden: !state.isOpen,
1324
+ children: [
1325
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1326
+ "div",
1327
+ {
1328
+ id: `select-background-${state.id}`,
1329
+ onClick: () => trigger.toggleOpen(false),
1330
+ className: (0, import_clsx4.default)("fixed inset-0 w-screen h-screen")
1331
+ }
1332
+ ),
1333
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1334
+ "ul",
1335
+ {
1336
+ ...props,
1337
+ id: `${state.id}-listbox`,
1338
+ ref: innerRef,
1339
+ onKeyDown: (event) => {
1340
+ switch (event.key) {
1341
+ case "Escape":
1346
1342
  trigger.toggleOpen(false);
1347
- }
1348
- event.preventDefault();
1343
+ event.preventDefault();
1344
+ event.stopPropagation();
1345
+ break;
1346
+ case match(orientation, {
1347
+ vertical: "ArrowDown",
1348
+ horizontal: "ArrowUp"
1349
+ }):
1350
+ item.moveHighlightedIndex(1);
1351
+ event.preventDefault();
1352
+ break;
1353
+ case match(orientation, {
1354
+ vertical: "ArrowUp",
1355
+ horizontal: "ArrowDown"
1356
+ }):
1357
+ item.moveHighlightedIndex(-1);
1358
+ event.preventDefault();
1359
+ break;
1360
+ case "Home":
1361
+ event.preventDefault();
1362
+ break;
1363
+ case "End":
1364
+ event.preventDefault();
1365
+ break;
1366
+ case "Enter":
1367
+ // Fall through
1368
+ case " ":
1369
+ if (state.highlightedValue) {
1370
+ item.toggleSelection(state.highlightedValue);
1371
+ if (!config.isMultiSelect) {
1372
+ trigger.toggleOpen(false);
1373
+ }
1374
+ event.preventDefault();
1375
+ }
1376
+ break;
1349
1377
  }
1350
- break;
1378
+ },
1379
+ className: (0, import_clsx4.default)("flex-col-0 p-2 bg-menu-background text-menu-text rounded-md shadow-hw-bottom focus-style-within overflow-auto", props.className),
1380
+ style: {
1381
+ opacity: position ? void 0 : 0,
1382
+ position: "fixed",
1383
+ ...position
1384
+ },
1385
+ role: "listbox",
1386
+ "aria-multiselectable": config.isMultiSelect,
1387
+ "aria-orientation": orientation,
1388
+ tabIndex: position ? 0 : void 0,
1389
+ children: props.children
1351
1390
  }
1352
- },
1353
- className: (0, import_clsx4.default)("flex-col-0 p-2 bg-menu-background text-menu-text rounded-md shadow-hw-bottom focus-style-within overflow-auto", props.className),
1354
- style: {
1355
- opacity: position ? void 0 : 0,
1356
- position: "fixed",
1357
- ...position
1358
- },
1359
- role: "listbox",
1360
- "aria-multiselectable": config.isMultiSelect,
1361
- "aria-orientation": orientation,
1362
- tabIndex: position ? 0 : void 0,
1363
- children: props.children
1364
- }
1365
- )
1366
- ] }),
1391
+ )
1392
+ ]
1393
+ }
1394
+ ),
1367
1395
  document.body
1368
1396
  );
1369
1397
  }