@interopio/groups-ui-react 2.2.0 → 2.2.1

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.
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { Bounds, ButtonProps, ToggleButtonProps } from "./internal";
2
+ import { Bounds, ButtonProps, OverflowedTabInfo, ToggleButtonProps } from "./internal";
3
3
  import { CustomButtonProps } from "./defaultComponents";
4
4
  export interface ChannelProps {
5
5
  visible: boolean;
@@ -40,6 +40,13 @@ export interface BelowTabsProps {
40
40
  frameId: string;
41
41
  selectedWindow: string;
42
42
  }
43
+ export interface TabOverflowPopupProps {
44
+ frameId: string;
45
+ select: (windowId: string) => void;
46
+ close: (windowId: string) => void;
47
+ hiddenTabsToTheLeft: OverflowedTabInfo[];
48
+ hiddenTabsToTheRight: OverflowedTabInfo[];
49
+ }
43
50
  export interface CaptionEditorProps {
44
51
  show: boolean;
45
52
  text?: string;
@@ -99,6 +106,7 @@ export interface AfterTabsProps {
99
106
  selectedWindow: string;
100
107
  }
101
108
  export interface TabHeaderButtonsProps {
109
+ overflow?: ButtonProps;
102
110
  feedback?: ButtonProps;
103
111
  clone?: ButtonProps;
104
112
  sticky?: ToggleButtonProps;
@@ -138,6 +146,7 @@ export interface GroupProps {
138
146
  After?: React.ComponentType<AfterTabsProps>;
139
147
  Buttons?: React.ComponentType<TabHeaderButtonsProps>;
140
148
  Below?: React.ComponentType<BelowTabsProps>;
149
+ OverflowPopup?: React.ComponentType<TabOverflowPopupProps>;
141
150
  };
142
151
  html?: {
143
152
  Buttons?: React.ComponentType<HtmlButtonsProps>;
@@ -32,6 +32,8 @@ export interface UnlockButtonProps extends ButtonProps {
32
32
  }
33
33
  export interface MinimizeButtonProps extends ButtonProps {
34
34
  }
35
+ export interface OverflowButtonProps extends ButtonProps {
36
+ }
35
37
  export interface MaximizeButtonProps extends ButtonProps {
36
38
  }
37
39
  export interface RestoreButtonProps extends ButtonProps {
@@ -32,6 +32,7 @@ export interface GroupWrapperProps {
32
32
  onCreateAfterTabsComponentRequested?: (options: CreateFrameElementRequestOptions) => void;
33
33
  onUpdateAfterTabsComponentRequested?: (options: CreateFrameElementRequestOptions) => void;
34
34
  onCreateTabHeaderButtonsRequested?: (options: CreateButtonsOptions) => void;
35
+ onCreateTabOverflowPopupRequested?: (options: CreateTabOverflowPopupRequestOptions) => void;
35
36
  onCreateBelowTabsRequested?: (options: CreateFrameElementRequestOptions) => void;
36
37
  onUpdateBelowTabsRequested?: (options: CreateFrameElementRequestOptions) => void;
37
38
  onUpdateFrameRequested?: (options: UpdateFrameRequestOptions) => void;
@@ -50,6 +51,7 @@ export interface GroupWrapperProps {
50
51
  onRemoveTabRequested?: (options: RemoveRequestOptions) => void;
51
52
  onRemoveAfterTabsComponentRequested?: (options: RemoveRequestOptions) => void;
52
53
  onRemoveTabHeaderButtonsRequested?: (options: RemoveRequestOptions) => void;
54
+ onRemoveTabOverflowPopupRequested?: (options: RemoveRequestOptions) => void;
53
55
  onRemoveBelowTabsRequested?: (options: RemoveRequestOptions) => void;
54
56
  onShowCaptionEditorRequested?: (targetType: TargetType, targetId: string, text: string) => void;
55
57
  onCommitCaptionEditingRequested?: (targetType: TargetType, targetId: string) => void;
@@ -128,6 +130,10 @@ export interface UpdateCustomButtonOptions {
128
130
  imageData: string;
129
131
  }
130
132
  export interface CreateButtonsOptions extends CreateFrameElementRequestOptions {
133
+ overflow: {
134
+ tooltip: string;
135
+ visible: boolean;
136
+ };
131
137
  feedback: {
132
138
  tooltip: string;
133
139
  visible: boolean;
@@ -185,6 +191,14 @@ export interface CreateElementRequestOptions extends BaseElementOptions {
185
191
  export interface CreateFrameElementRequestOptions extends CreateElementRequestOptions {
186
192
  selectedWindow: string;
187
193
  }
194
+ export interface OverflowedTabInfo {
195
+ title: string;
196
+ windowId: string;
197
+ }
198
+ export interface CreateTabOverflowPopupRequestOptions extends CreateElementRequestOptions {
199
+ hiddenTabsToTheLeft: OverflowedTabInfo[];
200
+ hiddenTabsToTheRight: OverflowedTabInfo[];
201
+ }
188
202
  export interface CreateFrameLoadingAnimationRequestOptions extends CreateFrameElementRequestOptions {
189
203
  show: boolean;
190
204
  }
@@ -197,6 +211,7 @@ export declare enum TargetType {
197
211
  HtmlButtons = "html"
198
212
  }
199
213
  export declare enum StandardButtons {
214
+ Overflow = "overflow",
200
215
  Feedback = "feedback",
201
216
  Clone = "clone",
202
217
  Sticky = "sticky",
@@ -244,6 +259,9 @@ export interface ElementCreationWrapperState {
244
259
  tabHeaderButtons: {
245
260
  [targetId: string]: CreateButtonsOptions;
246
261
  };
262
+ tabOverflowPopups: {
263
+ [targetId: string]: CreateTabOverflowPopupRequestOptions;
264
+ };
247
265
  belowTabsZones: {
248
266
  [targetId: string]: CreateFrameElementRequestOptions;
249
267
  };
@@ -266,6 +284,7 @@ export interface ExternalLibraryFactory {
266
284
  onCaptionEditorVisibleChanged(targetType: TargetType, targetId: string, visible: boolean): void;
267
285
  onCaptionEditorBoundsChanged(targetType: TargetType, targetId: string, bounds: Bounds): void;
268
286
  commitCaptionEditing(targetType: TargetType, targetId: string, text: string): void;
287
+ selectTab(windowId: string): void;
269
288
  }
270
289
  export interface WebGroupsManager {
271
290
  init: (factory?: any) => void;
@@ -19,6 +19,7 @@ declare class WebGroupsManagerDecorator {
19
19
  onMinimizeButtonClick(targetType: TargetType, targetId: string): void;
20
20
  onLockButtonClick(targetType: TargetType, targetId: string): void;
21
21
  onUnlockButtonClick(targetType: TargetType, targetId: string): void;
22
+ onOverflowButtonClick(targetType: TargetType, targetId: string): void;
22
23
  onFeedbackButtonClick(targetType: TargetType, targetId: string): void;
23
24
  onCloneButtonClick(targetType: TargetType, targetId: string): void;
24
25
  onStickyButtonClick(targetType: TargetType, targetId: string): void;
@@ -34,6 +35,7 @@ declare class WebGroupsManagerDecorator {
34
35
  commitCaptionEditing(targetType: TargetType, targetId: string, text: string): void;
35
36
  onCommitCaptionEditingRequested(targetType: TargetType, targetId: string, callback: () => void): () => void;
36
37
  requestCommitCaptionEditing(targetType: TargetType, targetId: string): void;
38
+ selectTab(windowId: string): void;
37
39
  }
38
40
  declare const _default: WebGroupsManagerDecorator;
39
41
  export default _default;
@@ -1,4 +1,4 @@
1
- import { CreateElementRequestOptions, CreateFrameCaptionBarRequestOptions, CreateFrameElementRequestOptions, CreateGroupCaptionBarRequestOptions, CreateButtonsOptions, CreateTabRequestOptions, ElementCreationWrapperState, RemoveRequestOptions, TargetType, UpdateFrameCaptionBarRequestOptions, UpdateGroupCaptionBarRequestOptions, UpdateStandardButtonRequestOptions, UpdateFrameRequestOptions, CreateFrameLoadingAnimationRequestOptions, UpdateCustomButtonsRequestOptions } from "./types/internal";
1
+ import { CreateElementRequestOptions, CreateFrameCaptionBarRequestOptions, CreateFrameElementRequestOptions, CreateGroupCaptionBarRequestOptions, CreateButtonsOptions, CreateTabRequestOptions, ElementCreationWrapperState, RemoveRequestOptions, TargetType, UpdateFrameCaptionBarRequestOptions, UpdateGroupCaptionBarRequestOptions, UpdateStandardButtonRequestOptions, UpdateFrameRequestOptions, CreateFrameLoadingAnimationRequestOptions, UpdateCustomButtonsRequestOptions, CreateTabOverflowPopupRequestOptions } from "./types/internal";
2
2
  declare class WebGroupsStore {
3
3
  private listeners;
4
4
  private state;
@@ -19,6 +19,7 @@ declare class WebGroupsStore {
19
19
  onCreateTabHeaderButtonsRequested: (options: CreateButtonsOptions) => void;
20
20
  onCreateBelowTabsComponentRequested: (options: CreateFrameElementRequestOptions) => void;
21
21
  onCreateHtmlButtonsRequested: (options: CreateButtonsOptions) => void;
22
+ onCreateTabOverflowPopupRequested: (options: CreateTabOverflowPopupRequestOptions) => void;
22
23
  onUpdateHtmlButtonsRequested: (options: CreateButtonsOptions) => void;
23
24
  onUpdateGroupCaptionBarRequested: (options: UpdateGroupCaptionBarRequestOptions) => void;
24
25
  onUpdateFrameCaptionBarRequested: (options: UpdateFrameCaptionBarRequestOptions) => void;
@@ -45,6 +46,7 @@ declare class WebGroupsStore {
45
46
  onRemoveTabHeaderButtonsRequested: (options: RemoveRequestOptions) => void;
46
47
  onRemoveBelowTabsRequested: (options: RemoveRequestOptions) => void;
47
48
  onRemoveHtmlButtonsRequested: (options: RemoveRequestOptions) => void;
49
+ onRemoveTabOverflowPopupRequested: (options: RemoveRequestOptions) => void;
48
50
  onShowCaptionEditorRequested: (targetType: TargetType, targetId: string, text: string) => void;
49
51
  onCommitCaptionEditingRequested: (targetType: TargetType, targetId: string) => void;
50
52
  onHideCaptionEditorRequested: (targetType: TargetType, targetId: string) => void;
@@ -1,4 +1,5 @@
1
1
  @import "vars.css";
2
+ @import "../../node_modules/overlayscrollbars/styles/overlayscrollbars.css";
2
3
 
3
4
  * {
4
5
  box-sizing: border-box;
@@ -235,6 +236,10 @@ input {
235
236
  content: "\e91f";
236
237
  }
237
238
 
239
+ .t42-standard-button-overflow::before {
240
+ content: "\e91d";
241
+ }
242
+
238
243
  .t42-standard-button-sticky::before {
239
244
  content: var(--sticky-icon-off);
240
245
  display: block;
@@ -620,14 +625,69 @@ input {
620
625
  width: var(--t42-approaching-edge-size);
621
626
  }
622
627
 
628
+ .t42-sizing-border-group {
629
+ pointer-events: none;
630
+ list-style-type: none;
631
+ display: flex;
632
+ margin: 0px;
633
+ padding: 0px;
634
+ flex-grow: 0;
635
+ flex-shrink: 0;
636
+ position: absolute;
637
+ overflow: hidden;
638
+ z-index: 100;
639
+ background-color: var(--t42-sizing-border-group-color);
640
+ }
641
+
642
+ .t42-vertical-sizing-border-group {
643
+ flex-direction: column;
644
+ cursor: ew-resize;
645
+ }
646
+
647
+ .t42-horizontal-sizing-border-group {
648
+ flex-direction: row;
649
+ cursor: ns-resize;
650
+ }
651
+
652
+ .t42-sizing-border-group:hover {
653
+ background-color: var(--t42-hover-sizing-border-group-color);
654
+ }
655
+
656
+ .t42-active-sizing-border-group {
657
+ z-index: 200;
658
+ background-color: var(--t42-active-sizing-border-group-color);
659
+ }
660
+
661
+ .t42-active-sizing-border-group:hover {
662
+ background-color: var(--t42-active-sizing-border-group-color);
663
+ }
664
+
665
+ .t42-sizing-border {
666
+ pointer-events: auto;
667
+ margin: 0px;
668
+ padding: 0px;
669
+ flex-shrink: 0;
670
+ }
671
+
672
+ .t42-frame-sizing-border {
673
+ flex-grow: 0;
674
+ }
675
+
676
+ .t42-cross-sizing-border {
677
+ flex-grow: 1;
678
+ cursor: ne-resize;
679
+ }
680
+
681
+ .t42-active-sizing-border {
682
+ background-color: transparent;
683
+ }
684
+
623
685
  .t42-skip-focus {
624
686
  /* We used non-standard rule to have non-empty style */
625
687
  -moz-user-focus: ignore;
626
688
  }
627
689
 
628
-
629
690
  @keyframes clipMe {
630
-
631
691
  0%,
632
692
  100% {
633
693
  clip: rect(0, 25vh, 2px, 0);
@@ -728,3 +788,66 @@ input {
728
788
  width: 0;
729
789
  }
730
790
  }
791
+
792
+ .os-scrollbar-horizontal {
793
+ z-index: 1001;
794
+ }
795
+
796
+ .t42-tabs-overflow .t42-tab {
797
+ flex-shrink: 0;
798
+ }
799
+
800
+ .t42-tabs-overflow .t42-tabs {
801
+ overflow: auto;
802
+ }
803
+
804
+ .t42-page-popup {
805
+ position: absolute;
806
+ z-index: 999;
807
+ margin-top: var(--t42-wg-tab-over-top-offset);
808
+ }
809
+
810
+ .t42-tab-overflow-popup {
811
+ display: flex;
812
+ flex-direction: column;
813
+ min-width: var(--t42-wg-tab-over-min-width);
814
+ max-width: var(--t42-wg-tab-over-max-width);
815
+ max-height: var(--t42-wg-tab-over-max-height);
816
+ padding: var(--t42-wg-tab-over-padding);
817
+ border-radius: var(--t42-wg-tab-over-border-radius);
818
+ overflow: auto;
819
+ background-color: var(--t42-wg-tab-over-background);
820
+ }
821
+
822
+ .t42-tab-overflow-popup li {
823
+ display: flex;
824
+ gap: var(--t42-wg-tab-over-item-gap);
825
+ align-items: center;
826
+ height: var(--t42-wg-tab-over-item-height);
827
+ padding: var(--t42-wg-tab-over-item-padding);
828
+ }
829
+
830
+ .t42-tab-overflow-popup li span {
831
+ flex-grow: 1;
832
+ overflow: hidden;
833
+ text-wrap: nowrap;
834
+ text-overflow: clip;
835
+ }
836
+
837
+ .t42-tab-overflow-popup li:not(.title):hover {
838
+ color: var(--t42-wg-tab-over-item-color-hover);
839
+ background-color: var(--t42-wg-tab-over-item-background-hover);
840
+ }
841
+
842
+ .t42-tab-overflow-popup hr {
843
+ height: var(--t42-wg-tab-over-separator-size);
844
+ margin: var(--t42-wg-tab-over-separator-space);
845
+ border: 0;
846
+ background-color: var(--t42-wg-tab-over-separator-color);
847
+ }
848
+
849
+ .t42-tab-overflow-popup .title {
850
+ color: var(--t42-wg-tab-over-item-title-color);
851
+ font-size: var(--t42-wg-tab-over-item-title-size);
852
+ letter-spacing: var(--t42-wg-tab-over-item-title-spacing);
853
+ }