@theseam/ui-common 0.4.1 → 0.4.3

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 (58) hide show
  1. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +1 -1
  2. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
  3. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
  4. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
  5. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +1 -1
  6. package/esm2020/framework/top-bar/top-bar.component.mjs +1 -1
  7. package/esm2020/google-maps/google-maps/google-maps.component.mjs +32 -8
  8. package/esm2020/google-maps/google-maps-feature-helpers.mjs +13 -1
  9. package/esm2020/google-maps/google-maps.module.mjs +4 -2
  10. package/esm2020/google-maps/google-maps.service.mjs +96 -25
  11. package/esm2020/google-maps/public-api.mjs +2 -1
  12. package/esm2020/menu/menu-item.component.mjs +43 -15
  13. package/esm2020/menu/menu-toggle.directive.mjs +202 -43
  14. package/esm2020/menu/menu.component.mjs +37 -14
  15. package/esm2020/utils/geo-json/close-polygons.mjs +38 -0
  16. package/esm2020/utils/public-api.mjs +2 -1
  17. package/esm2020/widget/widget/widget.component.mjs +54 -33
  18. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +1 -1
  19. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  20. package/fesm2015/theseam-ui-common-datatable.mjs +3 -3
  21. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  22. package/fesm2015/theseam-ui-common-framework.mjs +2 -2
  23. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  24. package/fesm2015/theseam-ui-common-google-maps.mjs +138 -28
  25. package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
  26. package/fesm2015/theseam-ui-common-menu.mjs +442 -228
  27. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  28. package/fesm2015/theseam-ui-common-utils.mjs +39 -1
  29. package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
  30. package/fesm2015/theseam-ui-common-widget.mjs +53 -32
  31. package/fesm2015/theseam-ui-common-widget.mjs.map +1 -1
  32. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +1 -1
  33. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  34. package/fesm2020/theseam-ui-common-datatable.mjs +3 -3
  35. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  36. package/fesm2020/theseam-ui-common-framework.mjs +2 -2
  37. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  38. package/fesm2020/theseam-ui-common-google-maps.mjs +141 -32
  39. package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
  40. package/fesm2020/theseam-ui-common-menu.mjs +432 -225
  41. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  42. package/fesm2020/theseam-ui-common-utils.mjs +39 -1
  43. package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
  44. package/fesm2020/theseam-ui-common-widget.mjs +53 -32
  45. package/fesm2020/theseam-ui-common-widget.mjs.map +1 -1
  46. package/google-maps/google-maps/google-maps.component.d.ts +8 -1
  47. package/google-maps/google-maps-feature-helpers.d.ts +3 -0
  48. package/google-maps/google-maps.module.d.ts +1 -1
  49. package/google-maps/google-maps.service.d.ts +7 -0
  50. package/google-maps/public-api.d.ts +1 -0
  51. package/menu/menu-item.component.d.ts +20 -9
  52. package/menu/menu-toggle.directive.d.ts +34 -11
  53. package/menu/menu.component.d.ts +16 -2
  54. package/package.json +1 -1
  55. package/utils/geo-json/close-polygons.d.ts +9 -0
  56. package/utils/public-api.d.ts +1 -0
  57. package/widget/widget/widget.component.d.ts +10 -11
  58. package/widget/widget/widget.component.scss +12 -1
@@ -10,6 +10,7 @@ export declare class GoogleMapsService implements OnDestroy {
10
10
  private readonly _vcr;
11
11
  private readonly _ngUnsubscribe;
12
12
  private readonly _mapReadySubject;
13
+ private readonly _editingEnabledSubject;
13
14
  private _drawingManager?;
14
15
  private _featureContextMenu;
15
16
  private _activeContextMenu;
@@ -19,11 +20,14 @@ export declare class GoogleMapsService implements OnDestroy {
19
20
  googleMap?: google.maps.Map;
20
21
  readonly mapReady$: Observable<boolean>;
21
22
  get mapReady(): boolean;
23
+ readonly editingEnabled$: Observable<boolean>;
22
24
  constructor(_mapValueManager: MapValueManagerService, _ngZone: NgZone, _vcr: ViewContainerRef);
23
25
  ngOnDestroy(): void;
24
26
  setMap(map: google.maps.Map): void;
25
27
  setBaseLatLng(lat: number, lng: number): void;
26
28
  setFeatureContextMenu(menu: MenuComponent | null): void;
29
+ setEditingEnabled(enabled: boolean): void;
30
+ isEditingEnabled(): boolean;
27
31
  getDiv(): HTMLDivElement;
28
32
  fitBounds(bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral, padding?: number | google.maps.Padding): void;
29
33
  /**
@@ -42,11 +46,14 @@ export declare class GoogleMapsService implements OnDestroy {
42
46
  setFileInputHandler(handler: ((file: File) => void) | undefined | null): void;
43
47
  getFileInputHandler(): ((file: File) => void) | undefined | null;
44
48
  private _initFeatureStyling;
49
+ setFeatureHoveredStyleOverride(feature: google.maps.Data.Feature): void;
50
+ private _mergeStyleOptions;
45
51
  private _initFeatureChangeListeners;
46
52
  isDrawing(): boolean;
47
53
  hasSelectedFeature(): boolean;
48
54
  getSelectedFeature(): google.maps.Data.Feature | null;
49
55
  openContextMenu(): void;
56
+ closeContextMenu(): void;
50
57
  private _openContextMenuForFeature;
51
58
  getGeoJson(removeAppProperties?: boolean): Promise<object>;
52
59
  /** Asserts that the map has been initialized. */
@@ -11,6 +11,7 @@ export * from './google-maps-upload-button-control/google-maps-upload-button-con
11
11
  export * from './google-maps-recenter-button-control/google-maps-recenter-button-control.component';
12
12
  export * from './google-maps-places-autocomplete/google-maps-places-autocomplete.directive';
13
13
  export * from './google-maps-places-autocomplete/google-maps-places-autocomplete.component';
14
+ export * from './map-controls-service';
14
15
  export * from './google-maps-api-loader/google-maps-api-loader';
15
16
  export * from './google-maps-api-loader/lazy-google-maps-api-loader';
16
17
  export * from './google-maps-api-loader/noop-google-maps-api-loader';
@@ -1,5 +1,5 @@
1
1
  import { FocusableOption, FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';
2
- import { ElementRef, OnDestroy } from '@angular/core';
2
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, OnDestroy } from '@angular/core';
3
3
  import { Subject } from 'rxjs';
4
4
  import { CanDisableCtor } from '@theseam/ui-common/core';
5
5
  import { SeamIcon } from '@theseam/ui-common/icon';
@@ -8,23 +8,31 @@ import * as i0 from "@angular/core";
8
8
  declare class TheSeamMenuItemBase {
9
9
  }
10
10
  declare const _seamMenuItemMixinBase: CanDisableCtor & typeof TheSeamMenuItemBase;
11
- export declare class MenuItemComponent extends _seamMenuItemMixinBase implements OnDestroy, FocusableOption {
12
- private _elementRef;
13
- document: any;
14
- private _focusMonitor;
15
- private _parentMenu?;
11
+ export declare class MenuItemComponent extends _seamMenuItemMixinBase implements OnDestroy, AfterViewInit, FocusableOption {
12
+ private readonly _elementRef;
13
+ readonly _document: any;
14
+ private readonly _focusMonitor;
15
+ private readonly _changeDetectorRef;
16
+ private readonly _parentMenu?;
16
17
  /** ARIA role for the menu item. */
17
18
  role: 'menuitem' | 'menuitemradio' | 'menuitemcheckbox' | undefined | null;
18
19
  icon: SeamIcon | string | undefined | null;
19
20
  iconClass: string | undefined | null;
21
+ sublevelIcon: SeamIcon | string | undefined | null;
22
+ subLevelIconClass: string | undefined | null;
20
23
  badgeText: string | undefined | null;
21
24
  badgeTheme: string | undefined | null;
22
25
  /** Stream that emits when the menu item is hovered. */
23
26
  readonly _hovered: Subject<MenuItemComponent>;
27
+ /** Stream that emits when the menu item is focused. */
28
+ readonly _focused: Subject<MenuItemComponent>;
24
29
  /** Whether the menu item is highlighted. */
25
30
  _highlighted: boolean;
26
- constructor(_elementRef: ElementRef<HTMLElement>, document: any, _focusMonitor: FocusMonitor, _parentMenu?: ITheSeamMenuPanel<MenuItemComponent> | undefined);
31
+ /** Whether the menu item acts as a trigger for a sub-menu. */
32
+ _triggersSubmenu: boolean;
33
+ constructor(_elementRef: ElementRef<HTMLElement>, _document: any, _focusMonitor: FocusMonitor, _changeDetectorRef: ChangeDetectorRef, _parentMenu?: ITheSeamMenuPanel<MenuItemComponent> | undefined);
27
34
  ngOnDestroy(): void;
35
+ ngAfterViewInit(): void;
28
36
  /** Focuses the menu item. */
29
37
  focus(origin?: FocusOrigin): void;
30
38
  /** Used to set the `tabindex`. */
@@ -37,7 +45,10 @@ export declare class MenuItemComponent extends _seamMenuItemMixinBase implements
37
45
  _handleMouseEnter(): void;
38
46
  /** Gets the label to be used when determining whether the option should be focused. */
39
47
  getLabel(): string;
40
- static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemComponent, [null, null, null, { optional: true; }]>;
41
- static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemComponent, "[seamMenuItem]", ["seamMenuItem"], { "disabled": "disabled"; "role": "role"; "icon": "icon"; "iconClass": "iconClass"; "badgeText": "badgeText"; "badgeTheme": "badgeTheme"; }, {}, never, ["*"], false, never>;
48
+ _setHighlighted(isHighlighted: boolean): void;
49
+ _setTriggersSubmenu(triggersSubmenu: boolean): void;
50
+ _hasFocus(): boolean;
51
+ static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemComponent, [null, null, null, null, { optional: true; }]>;
52
+ static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemComponent, "[seamMenuItem]", ["seamMenuItem"], { "disabled": "disabled"; "role": "role"; "icon": "icon"; "iconClass": "iconClass"; "sublevelIcon": "sublevelIcon"; "subLevelIconClass": "subLevelIconClass"; "badgeText": "badgeText"; "badgeTheme": "badgeTheme"; }, {}, never, ["*"], false, never>;
42
53
  }
43
54
  export {};
@@ -1,29 +1,45 @@
1
1
  import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';
2
+ import { Direction, Directionality } from '@angular/cdk/bidi';
2
3
  import { ConnectionPositionPair, Overlay } from '@angular/cdk/overlay';
3
- import { ElementRef, OnDestroy, ViewContainerRef } from '@angular/core';
4
+ import { AfterContentInit, ElementRef, EventEmitter, OnDestroy, ViewContainerRef } from '@angular/core';
5
+ import { MenuItemComponent } from './menu-item.component';
6
+ import { ITheSeamMenuPanel } from './menu-panel';
4
7
  import { MenuComponent } from './menu.component';
5
8
  import * as i0 from "@angular/core";
6
- export declare class MenuToggleDirective implements OnDestroy {
7
- private _elementRef;
8
- private _viewContainerRef;
9
- private _overlay;
10
- private _focusMonitor;
9
+ export declare class MenuToggleDirective implements OnDestroy, AfterContentInit {
10
+ private readonly _elementRef;
11
+ private readonly _viewContainerRef;
12
+ private readonly _overlay;
13
+ private readonly _focusMonitor;
14
+ private readonly _parentMenu?;
15
+ private readonly _menuItemInstance?;
16
+ private readonly _dir?;
11
17
  private _active;
12
18
  private _overlayRef?;
13
19
  private _menuClosedSubscription;
14
20
  private _closingActionsSubscription;
21
+ private _hoverSubscription;
22
+ private readonly _changeDetectorRef;
15
23
  restoreFocus: boolean;
16
- _openedBy: 'mouse' | 'touch' | null;
17
- seamMenuToggle: MenuComponent | undefined | null;
24
+ _openedBy: 'mouse' | 'touch' | 'keyboard' | null;
25
+ get menu(): MenuComponent | undefined | null;
26
+ set menu(menu: MenuComponent | undefined | null);
27
+ _menu: MenuComponent | undefined | null;
18
28
  set positions(val: ConnectionPositionPair[]);
19
29
  get positions(): ConnectionPositionPair[];
20
30
  private _positions;
31
+ /** Event emitted when the associated menu is opened. */
32
+ readonly menuOpened: EventEmitter<void>;
33
+ /** Event emitted when the associated menu is opened. */
34
+ readonly menuClosed: EventEmitter<void>;
21
35
  _onMouseDown(event: MouseEvent): void;
22
36
  _onKeydown(event: any): void;
23
37
  _onClick(event: any): void;
24
38
  _onDocumentKeydown(event: any): void;
25
- constructor(_elementRef: ElementRef<HTMLElement>, _viewContainerRef: ViewContainerRef, _overlay: Overlay, _focusMonitor: FocusMonitor);
39
+ private readonly _parentMenuComponent?;
40
+ constructor(_elementRef: ElementRef<HTMLElement>, _viewContainerRef: ViewContainerRef, _overlay: Overlay, _focusMonitor: FocusMonitor, _parentMenu?: ITheSeamMenuPanel<MenuItemComponent> | undefined, _menuItemInstance?: MenuItemComponent | undefined, _dir?: Directionality | undefined);
26
41
  ngOnDestroy(): void;
42
+ ngAfterContentInit(): void;
27
43
  /**
28
44
  * Handles touch start events on the trigger.
29
45
  * Needs to be an arrow function so we can easily use addEventListener and removeEventListener.
@@ -31,6 +47,10 @@ export declare class MenuToggleDirective implements OnDestroy {
31
47
  private _handleTouchStart;
32
48
  toggle(): void;
33
49
  openMenu(): void;
50
+ /** The text direction of the containing app. */
51
+ get dir(): Direction;
52
+ /** Whether the menu triggers a sub-menu or a top-level one. */
53
+ triggersSubmenu(): boolean;
34
54
  closeMenu(): void;
35
55
  menuOpen(): boolean;
36
56
  private getOverlayPosition;
@@ -49,8 +69,11 @@ export declare class MenuToggleDirective implements OnDestroy {
49
69
  * focus to the menu trigger if the menu was opened via the keyboard.
50
70
  */
51
71
  private _resetMenu;
72
+ private _setIsMenuOpen;
52
73
  /** Returns a stream that emits whenever an action that should close the menu occurs. */
53
74
  private _menuClosingActions;
54
- static ɵfac: i0.ɵɵFactoryDeclaration<MenuToggleDirective, never>;
55
- static ɵdir: i0.ɵɵDirectiveDeclaration<MenuToggleDirective, "[seamMenuToggle]", ["seamMenuToggle"], { "seamMenuToggle": "seamMenuToggle"; "positions": "positions"; }, {}, never, never, false, never>;
75
+ /** Handles the cases where the user hovers over the trigger. */
76
+ private _handleHover;
77
+ static ɵfac: i0.ɵɵFactoryDeclaration<MenuToggleDirective, [null, null, null, null, { optional: true; }, { optional: true; self: true; }, { optional: true; }]>;
78
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MenuToggleDirective, "[seamMenuToggle]", ["seamMenuToggle"], { "menu": "seamMenuToggle"; "positions": "positions"; }, { "menuOpened": "menuOpened"; "menuClosed": "menuClosed"; }, never, never, false, never>;
56
79
  }
@@ -1,14 +1,19 @@
1
+ import { AnimationEvent } from '@angular/animations';
1
2
  import { FocusOrigin } from '@angular/cdk/a11y';
2
3
  import { AfterContentInit, EventEmitter, OnDestroy, TemplateRef } from '@angular/core';
3
- import { Observable } from 'rxjs';
4
+ import { Observable, Subject } from 'rxjs';
4
5
  import { MenuItemComponent } from './menu-item.component';
5
6
  import { ITheSeamMenuPanel } from './menu-panel';
6
7
  import { MenuFooterComponent } from './menu-footer/menu-footer.component';
7
8
  import { MenuHeaderComponent } from './menu-header/menu-header.component';
9
+ import { Direction } from '@angular/cdk/bidi';
8
10
  import * as i0 from "@angular/core";
11
+ /** Reason why the menu was closed. */
12
+ export type MenuCloseReason = void | 'click' | 'keydown' | 'tab';
9
13
  export declare const LIB_MENU: any;
10
14
  export declare class MenuComponent implements OnDestroy, AfterContentInit, ITheSeamMenuPanel {
11
15
  private readonly _ngUnsubscribe;
16
+ readonly panelId: string;
12
17
  private _footer;
13
18
  hasFooter$: Observable<boolean>;
14
19
  private _header;
@@ -22,8 +27,14 @@ export declare class MenuComponent implements OnDestroy, AfterContentInit, ITheS
22
27
  private _tabSubscription;
23
28
  /** Parent menu of the current menu panel. */
24
29
  parentMenu: ITheSeamMenuPanel | undefined;
30
+ /** Layout direction of the menu. */
31
+ direction: Direction | undefined;
32
+ /** Emits whenever an animation on the menu completes. */
33
+ readonly _animationDone: Subject<AnimationEvent>;
34
+ /** Whether the menu is animating. */
35
+ _isAnimating: boolean;
25
36
  templateRef?: TemplateRef<any>;
26
- readonly closed: EventEmitter<void | "click" | "keydown" | "tab">;
37
+ readonly closed: EventEmitter<MenuCloseReason>;
27
38
  menuClass: string | undefined | null;
28
39
  /**
29
40
  * Defines a width for a menu that will scale down if the window innerWidth is
@@ -60,6 +71,9 @@ export declare class MenuComponent implements OnDestroy, AfterContentInit, ITheS
60
71
  /** Sets the header component. */
61
72
  setHeader(header?: MenuHeaderComponent): void;
62
73
  _dropdownMenuClick(event: Event): void;
74
+ /** Callback that is invoked when the panel animation completes. */
75
+ _onAnimationDone(event: AnimationEvent): void;
76
+ _onAnimationStart(event: AnimationEvent): void;
63
77
  static ɵfac: i0.ɵɵFactoryDeclaration<MenuComponent, never>;
64
78
  static ɵcmp: i0.ɵɵComponentDeclaration<MenuComponent, "seam-menu", ["seamMenu"], { "menuClass": "menuClass"; "baseWidth": "baseWidth"; "animationType": "animationType"; }, { "closed": "closed"; }, never, ["*"], false, never>;
65
79
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theseam/ui-common",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^15.0.0",
6
6
  "@angular/common": "^15.0.0",
@@ -0,0 +1,9 @@
1
+ import { Feature, FeatureCollection, MultiPolygon, Polygon } from 'geojson';
2
+ /**
3
+ * Close all polygons in the GeoJSON.
4
+ *
5
+ * Google Maps requires that polygons be closed, but not all libraries have that
6
+ * requirement. This may add redundent points to the GeoJSON, but it will ensure
7
+ * that the GeoJSON is valid for Google Maps.
8
+ */
9
+ export declare function closePolygons(geoJson: FeatureCollection | Feature | Polygon | MultiPolygon): void;
@@ -22,6 +22,7 @@ export * from './geo-json/no-inner-rings.validator';
22
22
  export * from './geo-json/no-kinks.validator';
23
23
  export * from './geo-json/read-geo-file';
24
24
  export * from './geo-json/split-multi-polygons';
25
+ export * from './geo-json/close-polygons';
25
26
  export * from './array-move';
26
27
  export * from './calc-percentage';
27
28
  export * from './toggle-attribute';
@@ -20,10 +20,11 @@ export declare class WidgetComponent {
20
20
  static ngAcceptInputType_loading: BooleanInput;
21
21
  static ngAcceptInputType_hasConfig: BooleanInput;
22
22
  static ngAcceptInputType_canCollapse: BooleanInput;
23
- /** @ignore */
24
- configIcon: import("@fortawesome/fontawesome-common-types").IconDefinition;
25
- /** @ignore */
26
- collapseIcon: import("@fortawesome/fontawesome-common-types").IconDefinition;
23
+ readonly configIcon: import("@fortawesome/fontawesome-common-types").IconDefinition;
24
+ readonly collapseIcon: import("@fortawesome/fontawesome-common-types").IconDefinition;
25
+ /**
26
+ * Toggles the collapsed state of a widget.
27
+ */
27
28
  collapsed: boolean;
28
29
  /**
29
30
  * Toggles the top header bar of a widget. This should be true for most
@@ -49,9 +50,7 @@ export declare class WidgetComponent {
49
50
  */
50
51
  get icon(): SeamIcon | undefined;
51
52
  set icon(value: SeamIcon | undefined);
52
- /** @ignore */
53
53
  _iconUrl: string | undefined;
54
- /** @ignore */
55
54
  _iconObj: IconProp | undefined;
56
55
  /** Add a css class to the header icon. */
57
56
  iconClass: string | undefined | null;
@@ -59,18 +58,18 @@ export declare class WidgetComponent {
59
58
  loading: boolean;
60
59
  /** @ignore */
61
60
  hasConfig: boolean;
62
- /** @ignore */
61
+ /**
62
+ * Toggles the ability to collapse a widget. An icon will be displayed in the
63
+ * header to toggle the collapsed state.
64
+ */
63
65
  canCollapse: boolean;
64
66
  iconTpl?: WidgetIconTplDirective;
65
67
  titleTpl?: WidgetTitleTplDirective;
66
68
  /**
67
69
  * Toggles a widget's collapsed state.
68
- *
69
- * NOTE: Collapse is still being worked on.
70
- * @depracated
71
- * @ignore
72
70
  */
73
71
  collapse(): void;
72
+ get collapseState(): string;
74
73
  static ɵfac: i0.ɵɵFactoryDeclaration<WidgetComponent, never>;
75
74
  static ɵcmp: i0.ɵɵComponentDeclaration<WidgetComponent, "seam-widget", never, { "collapsed": "collapsed"; "hasHeader": "hasHeader"; "titleText": "titleText"; "icon": "icon"; "iconClass": "iconClass"; "loading": "loading"; "hasConfig": "hasConfig"; "canCollapse": "canCollapse"; }, {}, ["iconTpl", "titleTpl"], ["*", "seam-widget-footer"], false, never>;
76
75
  }
@@ -56,7 +56,7 @@ seam-widget {
56
56
  flex-direction: row;
57
57
  justify-content: center;
58
58
  text-align: center;
59
- height: 15px;
59
+ height: 25px;
60
60
  width: 30px;
61
61
 
62
62
  .svg-inline--fa {
@@ -65,6 +65,17 @@ seam-widget {
65
65
  width: 100%;
66
66
  }
67
67
  }
68
+
69
+ .svg-inline--fa {
70
+ transform: rotate(0deg);
71
+ transition: 300ms ease-in-out transform;
72
+ }
73
+
74
+ &.widget-header-btn-collapse--active {
75
+ .svg-inline--fa {
76
+ transform: rotate(90deg);
77
+ }
78
+ }
68
79
  }
69
80
  }
70
81