@eleventheye/asui 2.5.5 → 2.7.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 (148) hide show
  1. package/dist/apptypes/ASUI.types.d.ts +37 -3
  2. package/dist/apptypes/ASUI.types.d.ts.map +1 -1
  3. package/dist/apptypes/ASUI.types.js +18 -1
  4. package/dist/apptypes/index.d.ts +1 -1
  5. package/dist/apptypes/index.d.ts.map +1 -1
  6. package/dist/apptypes/index.js +5 -1
  7. package/dist/asdropdown/ASDropdown.js +1 -1
  8. package/dist/asiconbutton/ASIconButton.d.ts +5 -0
  9. package/dist/asiconbutton/ASIconButton.d.ts.map +1 -0
  10. package/dist/asiconbutton/ASIconButton.js +31 -0
  11. package/dist/asiconbutton/ASIconButton.types.d.ts +17 -0
  12. package/dist/asiconbutton/ASIconButton.types.d.ts.map +1 -0
  13. package/dist/asiconbutton/ASIconButton.types.js +2 -0
  14. package/dist/asiconbutton/index.d.ts +3 -0
  15. package/dist/asiconbutton/index.d.ts.map +1 -0
  16. package/dist/asiconbutton/index.js +6 -0
  17. package/dist/asiconbutton/styles.d.ts +6 -0
  18. package/dist/asiconbutton/styles.d.ts.map +1 -0
  19. package/dist/asiconbutton/styles.js +179 -0
  20. package/dist/asmodal/ASModal.d.ts +5 -0
  21. package/dist/asmodal/ASModal.d.ts.map +1 -0
  22. package/dist/asmodal/ASModal.js +31 -0
  23. package/dist/asmodal/ASModal.types.d.ts +8 -0
  24. package/dist/asmodal/ASModal.types.d.ts.map +1 -0
  25. package/dist/asmodal/ASModal.types.js +2 -0
  26. package/dist/asmodal/index.d.ts +3 -0
  27. package/dist/asmodal/index.d.ts.map +1 -0
  28. package/dist/asmodal/index.js +6 -0
  29. package/dist/asmodal/styles.d.ts +2 -0
  30. package/dist/asmodal/styles.d.ts.map +1 -0
  31. package/dist/asmodal/styles.js +14 -0
  32. package/dist/asnavbar/ASNavBar.d.ts +3 -1
  33. package/dist/asnavbar/ASNavBar.d.ts.map +1 -1
  34. package/dist/asnavbar/ASNavBar.js +46 -45
  35. package/dist/asnavbar/ASNavBar.types.d.ts +6 -3
  36. package/dist/asnavbar/ASNavBar.types.d.ts.map +1 -1
  37. package/dist/asnavbar/desktop/ASNavBarDW.d.ts +5 -0
  38. package/dist/asnavbar/desktop/ASNavBarDW.d.ts.map +1 -0
  39. package/dist/asnavbar/desktop/ASNavBarDW.js +88 -0
  40. package/dist/asnavbar/desktop/index.d.ts +3 -0
  41. package/dist/asnavbar/desktop/index.d.ts.map +1 -0
  42. package/dist/asnavbar/desktop/index.js +6 -0
  43. package/dist/asnavbar/desktop/styles.d.ts +37 -0
  44. package/dist/asnavbar/desktop/styles.d.ts.map +1 -0
  45. package/dist/asnavbar/desktop/styles.js +133 -0
  46. package/dist/asnavbar/mobile/ASNavBarMW.d.ts +5 -0
  47. package/dist/asnavbar/mobile/ASNavBarMW.d.ts.map +1 -0
  48. package/dist/asnavbar/mobile/ASNavBarMW.js +98 -0
  49. package/dist/asnavbar/mobile/index.d.ts +3 -0
  50. package/dist/asnavbar/mobile/index.d.ts.map +1 -0
  51. package/dist/asnavbar/mobile/index.js +6 -0
  52. package/dist/asnavbar/mobile/styles.d.ts +59 -0
  53. package/dist/asnavbar/mobile/styles.d.ts.map +1 -0
  54. package/dist/asnavbar/mobile/styles.js +247 -0
  55. package/dist/asnavbar/navbararrowbuttons/ASNavBarArrowButtons.d.ts +7 -0
  56. package/dist/asnavbar/navbararrowbuttons/ASNavBarArrowButtons.d.ts.map +1 -0
  57. package/dist/asnavbar/navbararrowbuttons/ASNavBarArrowButtons.js +23 -0
  58. package/dist/asnavbar/navbararrowbuttons/ASNavBarArrowButtons.types.d.ts +22 -0
  59. package/dist/asnavbar/navbararrowbuttons/ASNavBarArrowButtons.types.d.ts.map +1 -0
  60. package/dist/asnavbar/navbararrowbuttons/ASNavBarArrowButtons.types.js +2 -0
  61. package/dist/asnavbar/navbararrowbuttons/index.d.ts +3 -0
  62. package/dist/asnavbar/navbararrowbuttons/index.d.ts.map +1 -0
  63. package/dist/asnavbar/navbararrowbuttons/index.js +6 -0
  64. package/dist/asnavbar/navbararrowbuttons/styles.d.ts +42 -0
  65. package/dist/asnavbar/navbararrowbuttons/styles.d.ts.map +1 -0
  66. package/dist/asnavbar/navbararrowbuttons/styles.js +76 -0
  67. package/dist/asnavbar/{ASNavBarItem.d.ts → navbaritem/ASNavBarItem.d.ts} +1 -1
  68. package/dist/asnavbar/navbaritem/ASNavBarItem.d.ts.map +1 -0
  69. package/dist/asnavbar/navbaritem/ASNavBarItem.js +49 -0
  70. package/dist/asnavbar/navbaritem/index.d.ts +3 -0
  71. package/dist/asnavbar/navbaritem/index.d.ts.map +1 -0
  72. package/dist/asnavbar/navbaritem/index.js +6 -0
  73. package/dist/asnavbar/navbaritem/styles.d.ts +11 -0
  74. package/dist/asnavbar/navbaritem/styles.d.ts.map +1 -0
  75. package/dist/asnavbar/navbaritem/styles.js +73 -0
  76. package/dist/asnavbar/navbarpickpanel/ASNavBarPickPanel.d.ts +5 -0
  77. package/dist/asnavbar/navbarpickpanel/ASNavBarPickPanel.d.ts.map +1 -0
  78. package/dist/asnavbar/navbarpickpanel/ASNavBarPickPanel.js +27 -0
  79. package/dist/asnavbar/navbarpickpanel/ASNavBarPickPanel.types.d.ts +14 -0
  80. package/dist/asnavbar/navbarpickpanel/ASNavBarPickPanel.types.d.ts.map +1 -0
  81. package/dist/asnavbar/navbarpickpanel/ASNavBarPickPanel.types.js +2 -0
  82. package/dist/asnavbar/navbarpickpanel/index.d.ts +3 -0
  83. package/dist/asnavbar/navbarpickpanel/index.d.ts.map +1 -0
  84. package/dist/asnavbar/navbarpickpanel/index.js +6 -0
  85. package/dist/asnavbar/navbarpickpanel/styles.d.ts +11 -0
  86. package/dist/asnavbar/navbarpickpanel/styles.d.ts.map +1 -0
  87. package/dist/asnavbar/navbarpickpanel/styles.js +59 -0
  88. package/dist/asnavbar/navbarpickpanelitem/ASNavBarPickPanelItem.d.ts +5 -0
  89. package/dist/asnavbar/navbarpickpanelitem/ASNavBarPickPanelItem.d.ts.map +1 -0
  90. package/dist/asnavbar/{ASNavBarItem.js → navbarpickpanelitem/ASNavBarPickPanelItem.js} +8 -6
  91. package/dist/asnavbar/navbarpickpanelitem/index.d.ts +3 -0
  92. package/dist/asnavbar/navbarpickpanelitem/index.d.ts.map +1 -0
  93. package/dist/asnavbar/navbarpickpanelitem/index.js +6 -0
  94. package/dist/asnavbar/navbarpickpanelitem/styles.d.ts +11 -0
  95. package/dist/asnavbar/navbarpickpanelitem/styles.d.ts.map +1 -0
  96. package/dist/asnavbar/navbarpickpanelitem/styles.js +70 -0
  97. package/dist/asnavbar/styles.d.ts +1 -16
  98. package/dist/asnavbar/styles.d.ts.map +1 -1
  99. package/dist/asnavbar/styles.js +72 -94
  100. package/dist/astextfield/ASTextField.js +1 -1
  101. package/dist/astheme/ASThemeDefault.d.ts.map +1 -1
  102. package/dist/astheme/ASThemeDefault.js +6 -0
  103. package/dist/asutils/screenSizeHelpers.d.ts +2 -0
  104. package/dist/asutils/screenSizeHelpers.d.ts.map +1 -0
  105. package/dist/asutils/screenSizeHelpers.js +18 -0
  106. package/dist/icons/ASIcon.d.ts.map +1 -1
  107. package/dist/icons/ASIcon.js +4 -4
  108. package/dist/icons/AddItemIcon.js +1 -1
  109. package/dist/icons/AddUserIcon.js +1 -1
  110. package/dist/icons/ArrowLeftIcon.js +1 -1
  111. package/dist/icons/ArrowRightIcon.js +1 -1
  112. package/dist/icons/CalendarRangeIcon.js +1 -1
  113. package/dist/icons/CheckIcon.js +1 -1
  114. package/dist/icons/CloseIcon.js +1 -1
  115. package/dist/icons/DeleteIcon.d.ts.map +1 -1
  116. package/dist/icons/DeleteIcon.js +2 -2
  117. package/dist/icons/EleventheyeIcon.js +1 -1
  118. package/dist/icons/EmailIcon.js +1 -1
  119. package/dist/icons/ErrorIcon.js +1 -1
  120. package/dist/icons/EyeIcon.js +1 -1
  121. package/dist/icons/EyeSlashIcon.js +1 -1
  122. package/dist/icons/FootballIcon.js +1 -1
  123. package/dist/icons/GamesIcon.js +1 -1
  124. package/dist/icons/GearUserIcon.js +1 -1
  125. package/dist/icons/HeartIcon.js +1 -1
  126. package/dist/icons/HexagonIcon.js +1 -1
  127. package/dist/icons/HomeIcon.js +1 -1
  128. package/dist/icons/Icons.types.d.ts +2 -2
  129. package/dist/icons/Icons.types.d.ts.map +1 -1
  130. package/dist/icons/LockIcon.js +1 -1
  131. package/dist/icons/PasswordIcon.js +1 -1
  132. package/dist/icons/PenIcon.js +1 -1
  133. package/dist/icons/PodiumIcon.js +1 -1
  134. package/dist/icons/ReplayIcon.js +1 -1
  135. package/dist/icons/RulerIcon.js +1 -1
  136. package/dist/icons/SaveIcon.js +1 -1
  137. package/dist/icons/SearchIcon.js +1 -1
  138. package/dist/icons/StatsIcon.js +1 -1
  139. package/dist/icons/TimeLapseIcon.js +1 -1
  140. package/dist/icons/UnlockIcon.js +1 -1
  141. package/dist/icons/UserSettingsIcon.js +1 -1
  142. package/dist/icons/styles.d.ts.map +1 -1
  143. package/dist/icons/styles.js +2 -0
  144. package/dist/index.d.ts +7 -3
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +8 -2
  147. package/package.json +1 -1
  148. package/dist/asnavbar/ASNavBarItem.d.ts.map +0 -1
@@ -1,61 +1,62 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultNavBarStyleOptions = void 0;
3
4
  const tslib_1 = require("tslib");
4
5
  const jsx_runtime_1 = require("react/jsx-runtime");
5
6
  const react_1 = require("react");
6
7
  const uuid_1 = require("uuid");
7
8
  const ASUI_types_1 = require("../apptypes/ASUI.types");
8
- const ASNavBarItem_1 = tslib_1.__importDefault(require("../asnavbar/ASNavBarItem"));
9
- const styles_1 = require("../asnavbar/styles");
10
9
  const astheme_1 = tslib_1.__importDefault(require("../astheme"));
11
- const INIT_VALUE = (0, uuid_1.v4)();
12
- const ASNavBar = ({ className = '', navItems = [], selectedItemId = '', onItemSelected = () => undefined, theme = astheme_1.default, size = ASUI_types_1.ComponentSize.Medium, options = {}, }) => {
13
- const selectedItemIdRef = (0, react_1.useRef)(INIT_VALUE);
14
- const navBarRef = (0, react_1.useRef)(null);
15
- const navBarHighlightBoxRef = (0, react_1.useRef)(null);
16
- const [selected, setSelected] = (0, react_1.useState)(selectedItemId);
17
- const slideHighlightToSelectedItem = (selectedItemEl, itemId) => {
18
- if (!navBarHighlightBoxRef.current || !navBarRef.current)
19
- return;
20
- const selectedElRect = selectedItemEl.getBoundingClientRect();
21
- const parentRect = navBarRef.current.getBoundingClientRect();
22
- const offsetToSelectedEl = selectedElRect.left - parentRect.left;
23
- const selectedBox = navBarHighlightBoxRef.current;
24
- const selectedBoxWidth = selectedElRect.width;
25
- selectedBox.style.transform = `translateX(${offsetToSelectedEl}px)`;
26
- selectedBox.style.width = `${selectedBoxWidth}px`;
27
- selectedItemIdRef.current = itemId;
28
- onItemSelected(itemId);
29
- };
30
- const locateTargetSelectedElement = (selectedId) => {
31
- const selectedItemEl = document.getElementById(selectedId);
32
- if (selectedItemEl) {
33
- slideHighlightToSelectedItem(selectedItemEl, selectedId);
34
- selectedItemIdRef.current = selectedId;
35
- setSelected(selectedId);
36
- }
37
- };
10
+ const screenSizeHelpers_1 = require("../asutils/screenSizeHelpers");
11
+ const desktop_1 = tslib_1.__importDefault(require("./desktop"));
12
+ const mobile_1 = tslib_1.__importDefault(require("./mobile"));
13
+ const styles_1 = require("./styles");
14
+ exports.defaultNavBarStyleOptions = {
15
+ $displayModeOverride: ASUI_types_1.DisplayMode.None,
16
+ $disableTransitionsBetweenDisplayModes: false,
17
+ $mobileBreakpoint: 768,
18
+ $hideNavArrowButtonsInDW: false,
19
+ };
20
+ const ASNavBar = ({ className = '', navItems = [], selectedItemId = '', onItemSelected = () => undefined, theme = astheme_1.default, size = ASUI_types_1.ComponentSize.Medium, styleOptions = { ...exports.defaultNavBarStyleOptions }, }) => {
21
+ const visitedCountRef = (0, react_1.useRef)(0);
22
+ const [navBarComponentId] = (0, react_1.useState)(`asnavbar-${(0, uuid_1.v4)()}`);
23
+ const [isMobile, setIsMobile] = (0, react_1.useState)(false);
24
+ const [selectedId, setSelectedId] = (0, react_1.useState)(selectedItemId);
25
+ const { $mobileBreakpoint, $disableTransitionsBetweenDisplayModes, $displayModeOverride, $hideNavArrowButtonsInDW } = styleOptions;
38
26
  (0, react_1.useEffect)(() => {
39
- const isItemSameOrNull = selectedItemIdRef.current === selectedItemId || selectedItemId.length === 0;
40
- if (!navBarHighlightBoxRef.current || !navBarRef.current || isItemSameOrNull)
41
- return;
42
- locateTargetSelectedElement(selectedItemId);
27
+ const screenSize = (0, screenSizeHelpers_1.getScreenSize)();
28
+ console.log(`Screen size detected: ${screenSize}`);
29
+ }, []);
30
+ (0, react_1.useEffect)(() => {
31
+ setSelectedId(selectedItemId);
43
32
  }, [selectedItemId]);
44
33
  (0, react_1.useEffect)(() => {
45
- if (selectedItemIdRef.current === INIT_VALUE && navItems && navItems.length > 0 && !selectedItemId) {
46
- locateTargetSelectedElement(navItems[0].itemId);
34
+ if ($displayModeOverride !== ASUI_types_1.DisplayMode.None) {
35
+ setIsMobile($displayModeOverride === ASUI_types_1.DisplayMode.Mobile);
36
+ return;
37
+ }
38
+ if ($disableTransitionsBetweenDisplayModes) {
39
+ setIsMobile(window.innerWidth < $mobileBreakpoint);
40
+ return;
47
41
  }
48
- }, [selectedItemId, navItems]);
49
- const onItemSelectedHandler = (itemId, e) => {
50
- const selectedItemEl = e.target;
51
- if (selectedItemEl)
52
- slideHighlightToSelectedItem(selectedItemEl, itemId);
53
- selectedItemIdRef.current = itemId;
54
- setSelected(itemId);
42
+ visitedCountRef.current += 1;
43
+ console.log(`Initializing display mode, visited count: ${visitedCountRef.current}`);
44
+ window.addEventListener('resize', () => {
45
+ const width = window.innerWidth;
46
+ setIsMobile(width < $mobileBreakpoint);
47
+ });
48
+ setIsMobile(window.innerWidth < $mobileBreakpoint);
49
+ return () => {
50
+ window.removeEventListener('resize', () => {
51
+ const width = window.innerWidth;
52
+ setIsMobile(width < $mobileBreakpoint);
53
+ });
54
+ };
55
+ }, [$disableTransitionsBetweenDisplayModes, $mobileBreakpoint, $displayModeOverride]);
56
+ const onItemSelectedHandler = (itemId) => {
57
+ setSelectedId(itemId);
55
58
  onItemSelected(itemId);
56
59
  };
57
- const onItemResizedHandler = (itemId, item) => slideHighlightToSelectedItem(item, itemId);
58
- const isSelected = (itemId) => selected === itemId;
59
- return ((0, jsx_runtime_1.jsxs)(styles_1.ASNavBarStyled, { ref: navBarRef, className: `${className} ${size}`, theme: theme, ...options, children: [(0, jsx_runtime_1.jsx)(styles_1.ASSelectedBoxStyled, { ref: navBarHighlightBoxRef, theme: theme }), navItems.map((item, index) => ((0, jsx_runtime_1.jsx)(ASNavBarItem_1.default, { theme: theme, itemId: item.itemId, selected: isSelected(item.itemId), displayText: item.displayText, icon: item.icon, onItemResized: onItemResizedHandler, onItemClick: onItemSelectedHandler }, `key_${index}_${item.itemId}`)))] }));
60
+ return ((0, jsx_runtime_1.jsx)(styles_1.ASNavBarStyled, { id: navBarComponentId, theme: theme, ...styleOptions, children: isMobile ? ((0, jsx_runtime_1.jsx)(mobile_1.default, { id: `asnavbar-mw-${(0, uuid_1.v4)()}`, className: className, navItems: navItems, selectedItemId: selectedId, onItemSelected: onItemSelectedHandler, theme: theme, size: size, styleOptions: styleOptions })) : ((0, jsx_runtime_1.jsx)(desktop_1.default, { id: `asnavbar-dw-${(0, uuid_1.v4)()}`, className: className, navItems: navItems, selectedItemId: selectedId, onItemSelected: onItemSelectedHandler, theme: theme, size: size, styleOptions: styleOptions })) }));
60
61
  };
61
62
  exports.default = ASNavBar;
@@ -1,5 +1,5 @@
1
1
  import { MouseEvent, PropsWithChildren } from 'react';
2
- import { ASComponentSize, ASStyleOptions, ASTheme } from '../apptypes';
2
+ import { ASComponentSize, ASNavBarStyleOptions, ASTheme } from '../apptypes';
3
3
  export type ASNavBarItemType = {
4
4
  itemId: string;
5
5
  displayText: string;
@@ -14,18 +14,21 @@ export type ASNavBarItemProps = {
14
14
  displayText?: string;
15
15
  selected?: boolean;
16
16
  icon?: React.ReactNode;
17
+ itemIndex?: number;
17
18
  size?: ASComponentSize;
18
- onItemClick?: (id: string, e: MouseEvent) => void;
19
+ title?: string;
20
+ onItemClick?: (e: MouseEvent, id: string, index: number) => void;
19
21
  onItemResized?: (id: string, element: HTMLDivElement) => void;
20
22
  };
21
23
  export type ASNavBarOwnProps = {
24
+ id?: string;
22
25
  className?: string;
23
26
  theme?: ASTheme;
24
27
  selectedItemId?: string;
25
28
  onItemSelected?: (itemId: string) => void;
26
29
  navItems?: ASNavBarItemType[];
27
30
  size?: ASComponentSize;
28
- options?: ASStyleOptions;
31
+ styleOptions?: ASNavBarStyleOptions;
29
32
  };
30
33
  export type ASNavBarProps = PropsWithChildren<ASNavBarOwnProps>;
31
34
  //# sourceMappingURL=ASNavBar.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ASNavBar.types.d.ts","sourceRoot":"","sources":["../../src/asnavbar/ASNavBar.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEvE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAClD,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"ASNavBar.types.d.ts","sourceRoot":"","sources":["../../src/asnavbar/ASNavBar.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE7E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { ASNavBarProps } from '../../asnavbar/ASNavBar.types';
3
+ declare const ASNavBarDW: React.FC<ASNavBarProps>;
4
+ export default ASNavBarDW;
5
+ //# sourceMappingURL=ASNavBarDW.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ASNavBarDW.d.ts","sourceRoot":"","sources":["../../../src/asnavbar/desktop/ASNavBarDW.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwE,MAAM,OAAO,CAAC;AAI7F,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAQ9D,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA8HvC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const uuid_1 = require("uuid");
7
+ const ASUI_types_1 = require("../../apptypes/ASUI.types");
8
+ const ASNavBar_1 = require("../../asnavbar/ASNavBar");
9
+ const astheme_1 = tslib_1.__importDefault(require("../../astheme"));
10
+ const navbararrowbuttons_1 = tslib_1.__importDefault(require("../navbararrowbuttons"));
11
+ const navbaritem_1 = tslib_1.__importDefault(require("../navbaritem"));
12
+ const styles_1 = require("./styles");
13
+ const INIT_VALUE = (0, uuid_1.v4)();
14
+ const ASNavBarDW = ({ id = `asnavbar-dw-${(0, uuid_1.v4)()}`, className = '', navItems = [], selectedItemId = '', onItemSelected = () => undefined, theme = astheme_1.default, size = ASUI_types_1.ComponentSize.Medium, styleOptions = { ...ASNavBar_1.defaultNavBarStyleOptions }, }) => {
15
+ const selectedItemIdRef = (0, react_1.useRef)(INIT_VALUE);
16
+ const navBarRef = (0, react_1.useRef)(null);
17
+ const navBarHighlightBoxRef = (0, react_1.useRef)(null);
18
+ const [selected, setSelected] = (0, react_1.useState)(selectedItemId);
19
+ const slideHighlightToSelectedItem = (selectedItemEl, itemId) => {
20
+ if (!navBarHighlightBoxRef.current || !navBarRef.current)
21
+ return;
22
+ const selectedElRect = selectedItemEl.getBoundingClientRect();
23
+ const parentRect = navBarRef.current.getBoundingClientRect();
24
+ const offsetToSelectedEl = selectedElRect.left - parentRect.left;
25
+ const selectedBox = navBarHighlightBoxRef.current;
26
+ const selectedBoxWidth = selectedElRect.width;
27
+ selectedBox.style.transform = `translateX(${offsetToSelectedEl}px)`;
28
+ selectedBox.style.width = `${selectedBoxWidth}px`;
29
+ selectedItemIdRef.current = itemId;
30
+ onItemSelected(itemId);
31
+ selectedItemEl.scrollIntoView({
32
+ behavior: 'smooth',
33
+ block: 'nearest',
34
+ inline: 'center',
35
+ });
36
+ };
37
+ const locateSelectedItemInDOM = (selectedId) => {
38
+ const selectedItemEl = document.getElementById(selectedId);
39
+ if (selectedItemEl) {
40
+ slideHighlightToSelectedItem(selectedItemEl, selectedId);
41
+ selectedItemIdRef.current = selectedId;
42
+ setSelected(selectedId);
43
+ }
44
+ };
45
+ (0, react_1.useEffect)(() => {
46
+ const isItemSameOrNull = selectedItemIdRef.current === selectedItemId || selectedItemId.length === 0;
47
+ if (!navBarHighlightBoxRef.current || !navBarRef.current || isItemSameOrNull)
48
+ return;
49
+ locateSelectedItemInDOM(selectedItemId);
50
+ }, [selectedItemId]);
51
+ (0, react_1.useEffect)(() => {
52
+ if (selectedItemIdRef.current === INIT_VALUE && navItems && navItems.length > 0 && !selectedItemId) {
53
+ locateSelectedItemInDOM(navItems[0].itemId);
54
+ }
55
+ }, [selectedItemId, navItems]);
56
+ const totalItemCount = (0, react_1.useMemo)(() => navItems.length, [navItems]);
57
+ const selectedIndex = (0, react_1.useMemo)(() => {
58
+ const index = navItems.findIndex((i) => i.itemId === selected);
59
+ return Math.max(index, 0);
60
+ }, [navItems, selected]);
61
+ const scrollToDirection = (0, react_1.useCallback)((e, direction) => {
62
+ e.stopPropagation();
63
+ e.preventDefault();
64
+ if (!navItems || navItems.length === 0)
65
+ return;
66
+ if (!navBarRef.current || !navBarHighlightBoxRef.current)
67
+ return;
68
+ if (direction === ASUI_types_1.ArrowButtonDirection.Left && selectedIndex <= 0)
69
+ return;
70
+ if (direction === ASUI_types_1.ArrowButtonDirection.Right && selectedIndex >= navItems.length - 1)
71
+ return;
72
+ const newSelectedIndex = direction === ASUI_types_1.ArrowButtonDirection.Left ? selectedIndex - 1 : selectedIndex + 1;
73
+ locateSelectedItemInDOM(navItems[newSelectedIndex].itemId);
74
+ }, [navItems, selectedIndex]);
75
+ const onItemSelectedHandler = (e, itemId) => {
76
+ const selectedItemEl = e.target;
77
+ if (selectedItemEl)
78
+ slideHighlightToSelectedItem(selectedItemEl, itemId);
79
+ selectedItemIdRef.current = itemId;
80
+ setSelected(itemId);
81
+ onItemSelected(itemId);
82
+ };
83
+ const onItemResizedHandler = (itemId, item) => slideHighlightToSelectedItem(item, itemId);
84
+ const isSelected = (itemId) => selected === itemId;
85
+ console.log(`What is inside styleOptions? ${styleOptions}`, styleOptions);
86
+ return ((0, jsx_runtime_1.jsxs)(styles_1.ASNavBarDWStyled, { id: id, ref: navBarRef, className: `${className} ${size}`, theme: theme, ...styleOptions, children: [(0, jsx_runtime_1.jsx)(styles_1.ASSelectedBoxStyled, { ref: navBarHighlightBoxRef, theme: theme }), (0, jsx_runtime_1.jsx)(styles_1.ASScrollContainerStyled, { children: navItems.map((item, index) => ((0, jsx_runtime_1.jsx)(navbaritem_1.default, { theme: theme, itemId: item.itemId, selected: isSelected(item.itemId), displayText: item.displayText, icon: item.icon, onItemResized: onItemResizedHandler, onItemClick: onItemSelectedHandler, size: size }, `key_${index}_${item.itemId}`))) }), (0, jsx_runtime_1.jsx)(navbararrowbuttons_1.default, { onArrowButtonClicked: scrollToDirection, className: styles_1.ASNavButtonsDWContainer, theme: theme, size: size, totalItemCount: totalItemCount, selectedIndex: selectedIndex, styleOptions: styleOptions })] }));
87
+ };
88
+ exports.default = ASNavBarDW;
@@ -0,0 +1,3 @@
1
+ export type { ASNavBarItemType, ASNavBarOwnProps, ASNavBarProps } from '../ASNavBar.types';
2
+ export { default } from './ASNavBarDW';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/asnavbar/desktop/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = void 0;
4
+ const tslib_1 = require("tslib");
5
+ var ASNavBarDW_1 = require("./ASNavBarDW");
6
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return tslib_1.__importDefault(ASNavBarDW_1).default; } });
@@ -0,0 +1,37 @@
1
+ import { ASStyleOptions, ASTheme } from '../../apptypes/ASUI.types';
2
+ interface ASNavBarStyledProps {
3
+ theme: ASTheme;
4
+ $mobileMode?: boolean;
5
+ $gap?: number;
6
+ $maxWidth?: number;
7
+ $minWidth?: number;
8
+ $borderRadius?: number;
9
+ $padding?: string;
10
+ }
11
+ export declare const ASNavBarDWStyled: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, ASNavBarStyledProps>> & string;
12
+ interface ASNavBarSelectedBoxStyledProps {
13
+ theme: ASTheme;
14
+ $mobileMode?: boolean;
15
+ $height?: number;
16
+ $borderRadius?: number;
17
+ }
18
+ export declare const ASSelectedBoxStyled: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, ASNavBarSelectedBoxStyledProps>> & string;
19
+ interface ASNavBarItemStyledProps {
20
+ theme: ASTheme;
21
+ $mobileMode?: boolean;
22
+ $selected?: boolean;
23
+ $margin?: string;
24
+ $padding?: string;
25
+ }
26
+ export declare const ASNavBarItemStyled: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, ASNavBarItemStyledProps>> & string;
27
+ interface ASNavBarItemPaddingProps {
28
+ theme: ASTheme;
29
+ $mobileMode?: boolean;
30
+ $styleOptions?: ASStyleOptions | {};
31
+ $selected?: boolean;
32
+ }
33
+ export declare const ASNavBarItemPadding: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, ASNavBarItemPaddingProps>> & string;
34
+ export declare const ASNavButtonsDWContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
35
+ export declare const ASScrollContainerStyled: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, ASNavBarStyledProps>> & string;
36
+ export {};
37
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/asnavbar/desktop/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGpE,UAAU,mBAAmB;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAsBD,eAAO,MAAM,gBAAgB,wPAoB5B,CAAC;AAEF,UAAU,8BAA8B;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,mBAAmB,qQAa/B,CAAC;AAEF,UAAU,uBAAuB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AACD,eAAO,MAAM,kBAAkB,4PAuC9B,CAAC;AAEF,UAAU,wBAAwB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,cAAc,GAAG,EAAE,CAAC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;CAKrB;AAED,eAAO,MAAM,mBAAmB,6PAiB/B,CAAC;AAEF,eAAO,MAAM,uBAAuB,6NAInC,CAAC;AAEF,eAAO,MAAM,uBAAuB,wPAYnC,CAAC"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ASScrollContainerStyled = exports.ASNavButtonsDWContainer = exports.ASNavBarItemPadding = exports.ASNavBarItemStyled = exports.ASSelectedBoxStyled = exports.ASNavBarDWStyled = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const styled_components_1 = tslib_1.__importStar(require("styled-components"));
6
+ const astheme_1 = tslib_1.__importDefault(require("../../astheme"));
7
+ const dimensionsForSizes = (0, styled_components_1.css) `
8
+ &.ASSmall {
9
+ height: 30px;
10
+ font-size: 1.3rem;
11
+ font-weight: 400;
12
+ }
13
+
14
+ &.ASMedium {
15
+ height: 40px;
16
+ font-size: 1.7rem;
17
+ font-weight: 500;
18
+ }
19
+
20
+ &.ASLarge {
21
+ height: 50px;
22
+ font-size: 2.1rem;
23
+ font-weight: 600;
24
+ }
25
+ `;
26
+ exports.ASNavBarDWStyled = styled_components_1.default.div `
27
+ display: flex;
28
+ align-items: center;
29
+ justify-content: center;
30
+ flex-wrap: nowrap;
31
+ flex-direction: row;
32
+ position: relative;
33
+ gap: ${({ $gap = 30 }) => $gap}px;
34
+ width: fit-content;
35
+ grid-row: 1;
36
+
37
+ min-width: ${({ $minWidth = 300 }) => $minWidth}px;
38
+ padding: ${({ $padding = '0 44px' }) => $padding};
39
+ border-radius: ${({ $borderRadius = 6 }) => $borderRadius}px;
40
+ background-color: ${({ theme }) => theme.navbar.navBarBackgroundColor};
41
+ box-shadow: ${({ theme }) => theme.navbar.navBarBoxShadow};
42
+ overflow: hidden;
43
+ overflow-x: overlay;
44
+
45
+ ${dimensionsForSizes}
46
+ `;
47
+ exports.ASSelectedBoxStyled = styled_components_1.default.span `
48
+ position: absolute;
49
+ height: 85%;
50
+ border-radius: ${({ $borderRadius = 4 }) => $borderRadius}px;
51
+ background-color: ${({ theme }) => theme.navbar.navBarSelectedBoxBackgroundColor};
52
+ z-index: 0;
53
+ left: 0;
54
+ transition: all 0.3s ease-in-out 0.1s allow-discrete;
55
+
56
+ @starting-style {
57
+ z-index: 0;
58
+ left: 0;
59
+ }
60
+ `;
61
+ exports.ASNavBarItemStyled = styled_components_1.default.div `
62
+ display: flex;
63
+ align-items: center;
64
+ justify-content: center;
65
+ flex-wrap: nowrap;
66
+ flex-direction: row;
67
+ transition: color 0.3s ease-in-out 0.1s;
68
+ text-transform: uppercase;
69
+ margin: ${({ $margin = '4px 0' }) => $margin};
70
+ padding: ${({ $padding = '0 8px' }) => $padding};
71
+ z-index: 1;
72
+ white-space: nowrap;
73
+ user-select: none;
74
+
75
+ ${dimensionsForSizes}
76
+
77
+ ${({ $selected = false, theme = astheme_1.default }) => $selected
78
+ ? `
79
+ transition: all 0.3s ease-in-out 0.2s;
80
+ color: ${theme.navbar.navBarItemColorSelected};
81
+ `
82
+ : `color: ${theme.navbar.navBarItemColor};`}
83
+
84
+ @media (hover) {
85
+ &:hover {
86
+ ${({ $selected = false, theme = astheme_1.default }) => $selected
87
+ ? `color: ${theme.navbar.navBarItemColorSelected};`
88
+ : `cursor: pointer;
89
+ transition: color 0.3s ease-in-out;
90
+ color: ${theme.navbar.navBarItemColorHover};
91
+ & > div > div > svg > path {
92
+ stroke-width: 0.4;
93
+ stroke: ${theme.navbar.navBarItemColorHover};
94
+ }
95
+ `}
96
+ }
97
+ }
98
+ `;
99
+ exports.ASNavBarItemPadding = styled_components_1.default.div `
100
+ padding: 0 4px;
101
+ pointer-events: none;
102
+ user-select: none;
103
+ ${({ $selected = false, theme = astheme_1.default }) => $selected
104
+ ? `
105
+ & > div > svg > path {
106
+ stroke-width: 0.4;
107
+ stroke: ${theme.navbar.navBarItemColorSelected};
108
+ }`
109
+ : `
110
+ & > div > svg > path {
111
+ stroke-width: 0.4;
112
+ stroke: ${theme.navbar.navBarItemColor};
113
+ }
114
+ `};
115
+ `;
116
+ exports.ASNavButtonsDWContainer = styled_components_1.default.div `
117
+ position: fixed;
118
+ max-width: inherit;
119
+ height: inherit;
120
+ `;
121
+ exports.ASScrollContainerStyled = styled_components_1.default.div `
122
+ display: flex;
123
+ justify-content: flex-start;
124
+ flex-wrap: nowrap;
125
+ flex-direction: row;
126
+ position: relative;
127
+ overflow: hidden;
128
+ gap: 16px;
129
+ width: 100%;
130
+ @supports (width: -webkit-fill-available) {
131
+ width: -webkit-fill-available;
132
+ }
133
+ `;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { ASNavBarProps } from '../ASNavBar.types';
3
+ declare const ASNavBarMW: React.FC<ASNavBarProps>;
4
+ export default ASNavBarMW;
5
+ //# sourceMappingURL=ASNavBarMW.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ASNavBarMW.d.ts","sourceRoot":"","sources":["../../../src/asnavbar/mobile/ASNavBarMW.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoE,MAAM,OAAO,CAAC;AAMzF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAalD,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA0KvC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const uuid_1 = require("uuid");
7
+ const ASUI_types_1 = require("../../apptypes/ASUI.types");
8
+ const asmodal_1 = tslib_1.__importDefault(require("../../asmodal"));
9
+ const astheme_1 = tslib_1.__importDefault(require("../../astheme"));
10
+ const icons_1 = require("../../icons");
11
+ const navbarpickpanel_1 = tslib_1.__importDefault(require("../navbarpickpanel"));
12
+ const styles_1 = require("./styles");
13
+ const INIT_VALUE = (0, uuid_1.v4)();
14
+ const ASNavBarMW = ({ id = `asnavbar-mw-${(0, uuid_1.v4)()}`, className = '', navItems = [], selectedItemId = '', onItemSelected = () => undefined, theme = astheme_1.default, size = ASUI_types_1.ComponentSize.Medium, styleOptions: options = {}, }) => {
15
+ const scrollContainerRef = (0, react_1.useRef)(null);
16
+ const selectedItemIdRef = (0, react_1.useRef)(INIT_VALUE);
17
+ const navBarRef = (0, react_1.useRef)(null);
18
+ const navBarHighlightBoxRef = (0, react_1.useRef)(null);
19
+ const [selected, setSelected] = (0, react_1.useState)(selectedItemId);
20
+ const [showSelectionPanel, setShowSelectionPanel] = (0, react_1.useState)(false);
21
+ const isSelected = (itemId) => selected === itemId;
22
+ const selectedScrolledIntoViewItem = (offset) => {
23
+ if (scrollContainerRef.current) {
24
+ scrollContainerRef.current.scrollLeft = offset > navItems.length * 200 ? navItems.length * 200 : offset;
25
+ }
26
+ };
27
+ (0, react_1.useEffect)(() => {
28
+ if (selectedItemId !== '') {
29
+ const index = navItems.findIndex((item) => item.itemId === selectedItemId);
30
+ if (index > -1) {
31
+ setSelected(selectedItemId);
32
+ selectedScrolledIntoViewItem(index * 200);
33
+ }
34
+ }
35
+ }, []);
36
+ (0, react_1.useEffect)(() => {
37
+ const isItemSameOrNull = selectedItemIdRef.current === selectedItemId || selectedItemId.length === 0;
38
+ if (!navBarHighlightBoxRef.current || !navBarRef.current || isItemSameOrNull)
39
+ return;
40
+ setSelected(selectedItemId);
41
+ }, [selectedItemId]);
42
+ (0, react_1.useEffect)(() => {
43
+ if (selectedItemIdRef.current === INIT_VALUE && navItems && navItems.length > 0 && selectedItemId === '') {
44
+ setSelected(navItems[0].itemId);
45
+ }
46
+ }, [navItems]);
47
+ (0, react_1.useEffect)(() => {
48
+ if (selectedItemIdRef.current === selected)
49
+ return;
50
+ console.log(`🟢 NEW ITEM SELECTED ${selected}`);
51
+ selectedItemIdRef.current = selected;
52
+ onItemSelected(selected);
53
+ }, [selected]);
54
+ const selectPrev = (e) => {
55
+ e.stopPropagation();
56
+ e.preventDefault();
57
+ if (scrollContainerRef.current) {
58
+ const offset = scrollContainerRef.current.scrollLeft - 200;
59
+ selectedScrolledIntoViewItem(offset);
60
+ }
61
+ return false;
62
+ };
63
+ const selectNext = (e) => {
64
+ e.stopPropagation();
65
+ e.preventDefault();
66
+ if (scrollContainerRef.current) {
67
+ const offset = scrollContainerRef.current.scrollLeft + 200;
68
+ selectedScrolledIntoViewItem(offset);
69
+ }
70
+ return false;
71
+ };
72
+ const onNavBarItemPickedHandler = (itemId, deltaIndex) => {
73
+ if (selectedItemIdRef.current !== itemId && scrollContainerRef.current) {
74
+ setShowSelectionPanel(false);
75
+ const offset = scrollContainerRef.current.scrollLeft + 200 * deltaIndex;
76
+ selectedScrolledIntoViewItem(offset);
77
+ }
78
+ };
79
+ const selectedIndex = (0, react_1.useMemo)(() => {
80
+ if (selected) {
81
+ const index = navItems.findIndex((item) => item.itemId === selected);
82
+ return index >= 0 ? index : 0;
83
+ }
84
+ return 0;
85
+ }, [navItems, selected]);
86
+ const onScrollEndedHandler = (e) => {
87
+ if (scrollContainerRef.current) {
88
+ const offset = scrollContainerRef.current.scrollLeft;
89
+ const itemIndex = Math.round(offset / 200);
90
+ if (itemIndex >= 0 && itemIndex < navItems?.length) {
91
+ const itemId = navItems[itemIndex].itemId;
92
+ setSelected(itemId);
93
+ }
94
+ }
95
+ };
96
+ return ((0, jsx_runtime_1.jsxs)(styles_1.ASNavBarMWStyled, { id: id, ref: navBarRef, className: `${className} ${size}`, theme: theme, ...options, children: [(0, jsx_runtime_1.jsx)(styles_1.ASSelectedBoxMWStyled, { ref: navBarHighlightBoxRef, theme: theme }), (0, jsx_runtime_1.jsx)(styles_1.ScrollableNavBarItems, { id: "ScrollableNavBarItems", ref: scrollContainerRef, onScrollEnd: onScrollEndedHandler, children: navItems.map((item, index) => ((0, jsx_runtime_1.jsx)(styles_1.ASNavBarItemMWStyled, { theme: theme, itemId: item.itemId, selected: isSelected(item.itemId), displayText: item.displayText, icon: item.icon, size: size, title: item.displayText, onItemClick: () => setShowSelectionPanel(true) }, `key_${index}_${item.itemId}`))) }), (0, jsx_runtime_1.jsxs)(styles_1.NavButtonsContainer, { children: [(0, jsx_runtime_1.jsx)(styles_1.ASIconButtonStyled, { role: "button", icon: icons_1.ArrowLeftIcon, onMouseOver: (e) => { }, onClick: selectPrev, theme: theme, size: size, disabled: selectedIndex <= 0, id: "LeftButtonId", iconSize: size === ASUI_types_1.ComponentSize.Large ? 32 : size === ASUI_types_1.ComponentSize.Medium ? 28 : 24, fillColor: theme.button.buttonIconColor }), (0, jsx_runtime_1.jsx)(styles_1.ASIconButtonStyled, { icon: icons_1.ArrowRightIcon, id: "RightButtonId", iconSize: size === ASUI_types_1.ComponentSize.Large ? 32 : size === ASUI_types_1.ComponentSize.Medium ? 28 : 24, size: size, fillColor: theme.button.buttonIconColor, disabled: selectedIndex >= navItems.length - 1, onClick: selectNext })] }), (0, jsx_runtime_1.jsx)(asmodal_1.default, { isOpen: showSelectionPanel, onBackdropClick: () => setShowSelectionPanel(false), className: className, children: (0, jsx_runtime_1.jsx)(navbarpickpanel_1.default, { theme: theme, size: size, className: className, navItems: navItems, selectedId: selected, selectedIndex: selectedIndex, onItemSelected: onNavBarItemPickedHandler }) })] }));
97
+ };
98
+ exports.default = ASNavBarMW;
@@ -0,0 +1,3 @@
1
+ export type { ASNavBarItemType, ASNavBarOwnProps, ASNavBarProps } from '../ASNavBar.types';
2
+ export { default } from './ASNavBarMW';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/asnavbar/mobile/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = void 0;
4
+ const tslib_1 = require("tslib");
5
+ var ASNavBarMW_1 = require("./ASNavBarMW");
6
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return tslib_1.__importDefault(ASNavBarMW_1).default; } });
@@ -0,0 +1,59 @@
1
+ import { ASComponentSize, ASTheme } from '../../apptypes/ASUI.types';
2
+ interface ASNavBarIconButtonStyledProps {
3
+ theme: ASTheme;
4
+ $mobileMode?: boolean;
5
+ $gap?: number;
6
+ $maxWidth?: number;
7
+ $borderRadius?: number;
8
+ $padding?: string;
9
+ size?: ASComponentSize;
10
+ }
11
+ export declare const ASIconButtonStyled: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<{
12
+ className?: string;
13
+ text?: string;
14
+ selected?: boolean;
15
+ toggle?: boolean;
16
+ size?: ASComponentSize;
17
+ iconSize?: number;
18
+ theme?: ASTheme;
19
+ paddingSize?: import("../../apptypes/ASUI.types").ASPaddingSize;
20
+ isLoading?: boolean;
21
+ icon: import("react").FC<import("react").PropsWithChildren<import("../../icons").IconProps>>;
22
+ } & import("../../icons").IconProps & Omit<import("react").HTMLProps<HTMLDivElement>, "size"> & {
23
+ children?: import("react").ReactNode | undefined;
24
+ }, ASNavBarIconButtonStyledProps>> & string & Omit<import("react").FC<import("../..").ASIconButtonProps>, keyof import("react").Component<any, {}, any>>;
25
+ export declare const NavControlLeftButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("../../icons").IconProps, never>> & string & Omit<import("react").FC<import("../../icons").IconProps>, keyof import("react").Component<any, {}, any>>;
26
+ export declare const NavControlRightButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("../../icons").IconProps, never>> & string & Omit<import("react").FC<import("../../icons").IconProps>, keyof import("react").Component<any, {}, any>>;
27
+ interface ASNavBarSelectedBoxStyledProps {
28
+ theme: ASTheme;
29
+ $mobileMode?: boolean;
30
+ $height?: number;
31
+ $borderRadius?: number;
32
+ }
33
+ export declare const ASSelectedBoxMWStyled: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, ASNavBarSelectedBoxStyledProps>> & string;
34
+ interface ASNavBarStyledProps {
35
+ theme: ASTheme;
36
+ $mobileMode?: boolean;
37
+ $gap?: number;
38
+ $maxWidth?: number;
39
+ $borderRadius?: number;
40
+ $padding?: string;
41
+ }
42
+ export declare const NavButtonsContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, ASNavBarStyledProps>> & string;
43
+ interface ASNavBarItemStyledProps {
44
+ theme: ASTheme;
45
+ $mobileMode?: boolean;
46
+ $selected?: boolean;
47
+ $margin?: string;
48
+ $padding?: string;
49
+ }
50
+ export declare const ASNavBarItemMWStyled: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("../ASNavBar.types").ASNavBarItemProps, ASNavBarItemStyledProps>> & string & Omit<import("react").FC<import("../ASNavBar.types").ASNavBarItemProps>, keyof import("react").Component<any, {}, any>>;
51
+ export declare const ScrollableNavBarItems: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
52
+ export declare const ASNavBarMWStyled: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, ASNavBarStyledProps>> & string;
53
+ interface ASNavBarItemPaddingProps {
54
+ theme: ASTheme;
55
+ $selected?: boolean;
56
+ }
57
+ export declare const ASNavBarItemPadding: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, ASNavBarItemPaddingProps>> & string;
58
+ export {};
59
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/asnavbar/mobile/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAiB,MAAM,2BAA2B,CAAC;AA2BpF,UAAU,6BAA6B;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;wJAM9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,sQAQhC,CAAC;AACF,eAAO,MAAM,qBAAqB,sQASjC,CAAC;AAEF,UAAU,8BAA8B;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AACD,eAAO,MAAM,qBAAqB,qQAgBjC,CAAC;AAEF,UAAU,mBAAmB;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AACD,eAAO,MAAM,mBAAmB,wPAgC/B,CAAC;AAEF,UAAU,uBAAuB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AACD,eAAO,MAAM,oBAAoB,iUAuDhC,CAAC;AAEF,eAAO,MAAM,qBAAqB,6NA0BjC,CAAC;AAEF,eAAO,MAAM,gBAAgB,wPA4C5B,CAAC;AAEF,UAAU,wBAAwB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,mBAAmB,6PAiB/B,CAAC"}