@royaloperahouse/chord 1.12.4-a-chord-development → 1.12.4-c-chord-development

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.
@@ -4075,9 +4075,14 @@ var Footer = function Footer(_ref) {
4075
4075
  }, additionalInfo)))));
4076
4076
  };
4077
4077
 
4078
+ var IOSPlatforms = ['iPhone', 'iPad'];
4079
+ var isIOSDevice = function isIOSDevice() {
4080
+ return IOSPlatforms.includes(navigator.platform);
4081
+ };
4082
+
4078
4083
  var _templateObject$x, _templateObject2$i, _templateObject3$b, _templateObject4$6, _templateObject5$4, _templateObject6$4;
4079
4084
  var LIST_ITEM_GAP = 32;
4080
- var AnchorTabbarWrapper = /*#__PURE__*/styled__default.div(_templateObject$x || (_templateObject$x = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: sticky;\n top: 0;\n background-color: var(--base-color-white);\n z-index: ", ";\n"])), zIndexes.anchor);
4085
+ var AnchorTabbarWrapper = /*#__PURE__*/styled__default.div(_templateObject$x || (_templateObject$x = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: sticky;\n width: 100%;\n top: 0;\n background-color: var(--base-color-white);\n z-index: ", ";\n"])), zIndexes.anchor);
4081
4086
  var TabsGrid = /*#__PURE__*/styled__default(Grid)(_templateObject2$i || (_templateObject2$i = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n height: var(--anchor-tabs-height);\n"])));
4082
4087
  var TabsWrapper = /*#__PURE__*/styled__default.div(_templateObject3$b || (_templateObject3$b = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n"])));
4083
4088
  var TabsList = /*#__PURE__*/styled__default.ul(_templateObject4$6 || (_templateObject4$6 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n width: ", ";\n display: flex;\n gap: ", "px;\n justify-content: ", ";\n align-items: center;\n list-style: none;\n padding: 0;\n margin: 0;\n height: var(--anchor-tabs-height);\n white-space: nowrap;\n overflow: scroll;\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n scroll-behavior: smooth;\n\n @media ", " {\n background: linear-gradient(\n 135deg,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 0.48) 85%,\n rgba(235, 235, 235, 0.4) 99%,\n rgba(255, 255, 255, 0.39) 100%\n );\n }\n\n @media ", " {\n & {\n width: ", ";\n }\n }\n"])), function (_ref) {
@@ -4087,10 +4092,14 @@ var TabsList = /*#__PURE__*/styled__default.ul(_templateObject4$6 || (_templateO
4087
4092
  var tabsOverflow = _ref2.tabsOverflow;
4088
4093
  return tabsOverflow ? 'start' : 'center';
4089
4094
  }, devices.mobileAndTablet, devices.mobile, function (_ref3) {
4090
- var tabsOverflow = _ref3.tabsOverflow;
4091
- return tabsOverflow ? 'calc(100% - 50px)' : '100%';
4095
+ var tabsOverflow = _ref3.tabsOverflow,
4096
+ hasTwoArrows = _ref3.hasTwoArrows;
4097
+ return tabsOverflow && hasTwoArrows ? 'calc(100% - 50px)' : '100%';
4098
+ });
4099
+ var ArrowsContainer = /*#__PURE__*/styled__default.div(_templateObject5$4 || (_templateObject5$4 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n width: ", ";\n height: var(--anchor-tabs-height);\n background-color: var(--base-color-white);\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 10px;\n"])), function (_ref4) {
4100
+ var fullWidth = _ref4.fullWidth;
4101
+ return fullWidth ? '74px' : '46px';
4092
4102
  });
4093
- var ArrowsContainer = /*#__PURE__*/styled__default.div(_templateObject5$4 || (_templateObject5$4 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n width: 74px;\n height: var(--anchor-tabs-height);\n background-color: var(--base-color-white);\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 10px;\n"])));
4094
4103
  var ArrowWrapper = /*#__PURE__*/styled__default.div(_templateObject6$4 || (_templateObject6$4 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n width: 24px;\n height: 24px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: flex-center;\n\n :hover {\n && svg path {\n fill: var(--base-color-primary);\n }\n }\n"])));
4095
4104
 
4096
4105
  var _excluded$7 = ["id", "text"];
@@ -4098,8 +4107,10 @@ var _excluded$7 = ["id", "text"];
4098
4107
  var AnchorTabBar = function AnchorTabBar(_ref) {
4099
4108
  var tabs = _ref.tabs,
4100
4109
  onTabClick = _ref.onTabClick,
4101
- activeTab = _ref.activeTab;
4110
+ activeTab = _ref.activeTab,
4111
+ topOffsetForIOS = _ref.topOffsetForIOS;
4102
4112
  var tabListRef = React.useRef(null);
4113
+ var wrapperRef = React.useRef(null);
4103
4114
 
4104
4115
  var _useState = React.useState(activeTab || ''),
4105
4116
  selectedItem = _useState[0],
@@ -4117,6 +4128,9 @@ var AnchorTabBar = function AnchorTabBar(_ref) {
4117
4128
  canScrollToRight = _useState4[0],
4118
4129
  setCanScrollToRight = _useState4[1];
4119
4130
 
4131
+ var timer = null;
4132
+ var hasTwoArrows = canScrollToRight && canScrollToLeft;
4133
+
4120
4134
  var isSelectedItem = function isSelectedItem(id) {
4121
4135
  return id === selectedItem;
4122
4136
  };
@@ -4143,6 +4157,47 @@ var AnchorTabBar = function AnchorTabBar(_ref) {
4143
4157
  return width;
4144
4158
  };
4145
4159
 
4160
+ var changeWrapperVisibilityOnOIS = function changeWrapperVisibilityOnOIS(showWrapper, topOffset) {
4161
+ if (showWrapper === void 0) {
4162
+ showWrapper = false;
4163
+ }
4164
+
4165
+ var wrapperEl = wrapperRef.current;
4166
+ wrapperEl.style.position = 'absolute';
4167
+ wrapperEl.style.visibility = showWrapper && topOffset ? 'visible' : 'hidden';
4168
+ if (showWrapper && topOffset) wrapperEl.style.top = topOffset + "px";
4169
+ };
4170
+
4171
+ var handleScrollOnIOS = function handleScrollOnIOS() {
4172
+ var topOffset = topOffsetForIOS;
4173
+ console.log(window.pageYOffset);
4174
+
4175
+ if (wrapperRef.current && window.pageYOffset > topOffset) {
4176
+ changeWrapperVisibilityOnOIS();
4177
+ } else if (wrapperRef.current && window.pageYOffset < topOffset) {
4178
+ changeWrapperVisibilityOnOIS(true, topOffset);
4179
+ }
4180
+
4181
+ if (timer !== null) clearTimeout(timer);
4182
+ timer = setTimeout(function () {
4183
+ if (window.pageYOffset > topOffset && wrapperRef.current) {
4184
+ changeWrapperVisibilityOnOIS(true, window.pageYOffset);
4185
+ }
4186
+ }, 300);
4187
+ }; // We use this behavior only on iOS devices because there is a known issue that
4188
+ // sticky elements lose their stickiness when a keyboard appears on the screen
4189
+
4190
+
4191
+ React.useEffect(function () {
4192
+ if (topOffsetForIOS && isIOSDevice()) {
4193
+ document.addEventListener('scroll', handleScrollOnIOS);
4194
+ return function () {
4195
+ document.removeEventListener('scroll', handleScrollOnIOS);
4196
+ };
4197
+ }
4198
+
4199
+ return;
4200
+ }, []);
4146
4201
  React.useEffect(function () {
4147
4202
  setTimeout(function () {
4148
4203
  if (tabListRef.current) tabListRef.current.scrollLeft += getScrollWidth();
@@ -4239,7 +4294,10 @@ var AnchorTabBar = function AnchorTabBar(_ref) {
4239
4294
  setCanScrollToRight(scrollLeft + clientWidth + LIST_ITEM_GAP < scrollWidth);
4240
4295
  };
4241
4296
 
4242
- return /*#__PURE__*/React__default.createElement(AnchorTabbarWrapper, null, /*#__PURE__*/React__default.createElement(TabsGrid, null, /*#__PURE__*/React__default.createElement(GridItem, {
4297
+ return /*#__PURE__*/React__default.createElement(AnchorTabbarWrapper, {
4298
+ ref: wrapperRef,
4299
+ id: "AnchorTabbarWrapper"
4300
+ }, /*#__PURE__*/React__default.createElement(TabsGrid, null, /*#__PURE__*/React__default.createElement(GridItem, {
4243
4301
  columnStartDesktop: tabsColumnStart,
4244
4302
  columnSpanDesktop: tabsColumnSpan,
4245
4303
  columnStartDevice: 2,
@@ -4247,6 +4305,7 @@ var AnchorTabBar = function AnchorTabBar(_ref) {
4247
4305
  }, /*#__PURE__*/React__default.createElement(TabsWrapper, {
4248
4306
  "data-testid": "anchor-tabs"
4249
4307
  }, /*#__PURE__*/React__default.createElement(TabsList, {
4308
+ hasTwoArrows: hasTwoArrows,
4250
4309
  ref: tabListRef,
4251
4310
  tabsOverflow: tabsOverflow,
4252
4311
  onScroll: onTabsScroll
@@ -4266,7 +4325,9 @@ var AnchorTabBar = function AnchorTabBar(_ref) {
4266
4325
  },
4267
4326
  tabIndex: 0
4268
4327
  }, rest), text));
4269
- })), tabsOverflow ? /*#__PURE__*/React__default.createElement(ArrowsContainer, null, canScrollToLeft ? /*#__PURE__*/React__default.createElement(ArrowWrapper, {
4328
+ })), tabsOverflow ? /*#__PURE__*/React__default.createElement(ArrowsContainer, {
4329
+ fullWidth: hasTwoArrows
4330
+ }, canScrollToLeft ? /*#__PURE__*/React__default.createElement(ArrowWrapper, {
4270
4331
  onClick: scrollToLeft
4271
4332
  }, /*#__PURE__*/React__default.createElement(Icon, {
4272
4333
  iconName: "Arrow",