|
|
@@ -3,133 +3,105 @@ title-bar(
|
|
|
[class.inset]='hostApp.platform == Platform.macOS'
|
|
|
)
|
|
|
|
|
|
-.wrap
|
|
|
- .tab-bar.vertical(
|
|
|
- *ngIf='config.store.appearance.tabsLocation == "left"'
|
|
|
- )
|
|
|
- .inset.background(*ngIf='hostApp.platform == Platform.macOS \
|
|
|
- && config.store.appearance.frame == "thin"')
|
|
|
- .tabs.vertical(
|
|
|
- dnd-sortable-container,
|
|
|
- [sortableData]='app.tabs',
|
|
|
- )
|
|
|
- tab-header(
|
|
|
- *ngFor='let tab of app.tabs; let idx = index',
|
|
|
- dnd-sortable,
|
|
|
- [sortableIndex]='idx',
|
|
|
- (onDragStart)='onTabDragStart()',
|
|
|
- (onDragEnd)='onTabDragEnd()',
|
|
|
-
|
|
|
- [index]='idx',
|
|
|
- [tab]='tab',
|
|
|
- [active]='tab == app.activeTab',
|
|
|
- [hasActivity]='tab.activity$|async',
|
|
|
- @animateTab,
|
|
|
- (click)='app.selectTab(tab)',
|
|
|
- [class.fully-draggable]='hostApp.platform != Platform.macOS',
|
|
|
- [class.drag-region]='hostApp.platform == Platform.macOS && !tabsDragging',
|
|
|
- [class.vertical]='true',
|
|
|
- )
|
|
|
-
|
|
|
+.content(
|
|
|
+ [class.tabs-on-top]='config.store.appearance.tabsLocation == "top" || config.store.appearance.tabsLocation == "left"',
|
|
|
+ [class.tabs-on-side]='hasVerticalTabs()',
|
|
|
+)
|
|
|
+ .tab-bar
|
|
|
+ .inset.background(*ngIf='hostApp.platform == Platform.macOS \
|
|
|
+ && config.store.appearance.frame == "thin" \
|
|
|
+ && (config.store.appearance.tabsLocation == "top" || config.store.appearance.tabsLocation == "left")')
|
|
|
+ .tabs(
|
|
|
+ *ngIf='config.store.appearance.tabsLocation != "bottom"'
|
|
|
+ dnd-sortable-container,
|
|
|
+ [sortableData]='app.tabs',
|
|
|
+ )
|
|
|
+ tab-header(
|
|
|
+ *ngFor='let tab of app.tabs; let idx = index',
|
|
|
+ dnd-sortable,
|
|
|
+ [sortableIndex]='idx',
|
|
|
+ (onDragStart)='onTabDragStart()',
|
|
|
+ (onDragEnd)='onTabDragEnd()',
|
|
|
|
|
|
- .content(
|
|
|
- [class.tabs-on-top]='config.store.appearance.tabsLocation == "top" || config.store.appearance.tabsLocation == "left"',
|
|
|
- [class.with-side-tab]='config.store.appearance.tabsLocation == "left"',
|
|
|
- )
|
|
|
- .tab-bar
|
|
|
- .inset.background(*ngIf='hostApp.platform == Platform.macOS \
|
|
|
- && config.store.appearance.frame == "thin" \
|
|
|
- && (config.store.appearance.tabsLocation == "top" || config.store.appearance.tabsLocation == "left")')
|
|
|
- .tabs(
|
|
|
- *ngIf='config.store.appearance.tabsLocation != "left"'
|
|
|
- dnd-sortable-container,
|
|
|
- [sortableData]='app.tabs',
|
|
|
- )
|
|
|
- tab-header(
|
|
|
- *ngFor='let tab of app.tabs; let idx = index',
|
|
|
- dnd-sortable,
|
|
|
- [sortableIndex]='idx',
|
|
|
- (onDragStart)='onTabDragStart()',
|
|
|
- (onDragEnd)='onTabDragEnd()',
|
|
|
+ [index]='idx',
|
|
|
+ [tab]='tab',
|
|
|
+ [active]='tab == app.activeTab',
|
|
|
+ [hasActivity]='tab.activity$|async',
|
|
|
+ @animateTab,
|
|
|
+ [@.disabled]='hasVerticalTabs()',
|
|
|
+ (click)='app.selectTab(tab)',
|
|
|
+ [class.fully-draggable]='hostApp.platform != Platform.macOS',
|
|
|
+ [class.drag-region]='hostApp.platform == Platform.macOS && !tabsDragging',
|
|
|
+ )
|
|
|
|
|
|
- [index]='idx',
|
|
|
- [tab]='tab',
|
|
|
- [active]='tab == app.activeTab',
|
|
|
- [hasActivity]='tab.activity$|async',
|
|
|
- @animateTab,
|
|
|
- (click)='app.selectTab(tab)',
|
|
|
- [class.fully-draggable]='hostApp.platform != Platform.macOS',
|
|
|
- [class.drag-region]='hostApp.platform == Platform.macOS && !tabsDragging',
|
|
|
- )
|
|
|
+ .btn-group.background
|
|
|
+ .d-flex(
|
|
|
+ *ngFor='let button of leftToolbarButtons',
|
|
|
+ ngbDropdown,
|
|
|
+ (openChange)='generateButtonSubmenu(button)',
|
|
|
+ )
|
|
|
+ button.btn.btn-secondary.btn-tab-bar(
|
|
|
+ [title]='button.title',
|
|
|
+ (click)='button.click && button.click()',
|
|
|
+ [fastHtmlBind]='button.icon',
|
|
|
+ ngbDropdownToggle,
|
|
|
+ )
|
|
|
+ div(*ngIf='button.submenu', ngbDropdownMenu)
|
|
|
+ button.dropdown-item.d-flex.align-items-center(
|
|
|
+ *ngFor='let item of button.submenuItems',
|
|
|
+ (click)='item.click()',
|
|
|
+ ngbDropdownItem,
|
|
|
+ )
|
|
|
+ .icon-wrapper(
|
|
|
+ *ngIf='hasIcons(button.submenuItems)',
|
|
|
+ [fastHtmlBind]='item.icon'
|
|
|
+ )
|
|
|
+ div([class.ml-3]='hasIcons(button.submenuItems)') {{item.title}}
|
|
|
|
|
|
- .btn-group.background
|
|
|
- .d-flex(
|
|
|
- *ngFor='let button of leftToolbarButtons',
|
|
|
- ngbDropdown,
|
|
|
- (openChange)='generateButtonSubmenu(button)',
|
|
|
- )
|
|
|
- button.btn.btn-secondary.btn-tab-bar(
|
|
|
- [title]='button.title',
|
|
|
- (click)='button.click && button.click()',
|
|
|
- [fastHtmlBind]='button.icon',
|
|
|
- ngbDropdownToggle,
|
|
|
- )
|
|
|
- div(*ngIf='button.submenu', ngbDropdownMenu)
|
|
|
- button.dropdown-item.d-flex.align-items-center(
|
|
|
- *ngFor='let item of button.submenuItems',
|
|
|
- (click)='item.click()',
|
|
|
- ngbDropdownItem,
|
|
|
- )
|
|
|
- .icon-wrapper(
|
|
|
- *ngIf='hasIcons(button.submenuItems)',
|
|
|
- [fastHtmlBind]='item.icon'
|
|
|
- )
|
|
|
- div([class.ml-3]='hasIcons(button.submenuItems)') {{item.title}}
|
|
|
+ .drag-space.background([class.persistent]='config.store.appearance.frame == "thin" && hostApp.platform != Platform.macOS')
|
|
|
|
|
|
- .drag-space.background([class.persistent]='config.store.appearance.frame == "thin" && hostApp.platform != Platform.macOS')
|
|
|
+ .btn-group.background
|
|
|
+ .d-flex(
|
|
|
+ *ngFor='let button of rightToolbarButtons',
|
|
|
+ ngbDropdown,
|
|
|
+ (openChange)='generateButtonSubmenu(button)',
|
|
|
+ )
|
|
|
+ button.btn.btn-secondary.btn-tab-bar(
|
|
|
+ [title]='button.title',
|
|
|
+ (click)='button.click && button.click()',
|
|
|
+ [fastHtmlBind]='button.icon',
|
|
|
+ ngbDropdownToggle,
|
|
|
+ )
|
|
|
+ div(*ngIf='button.submenu', ngbDropdownMenu)
|
|
|
+ button.dropdown-item.d-flex.align-items-center(
|
|
|
+ *ngFor='let item of button.submenuItems',
|
|
|
+ (click)='item.click()',
|
|
|
+ ngbDropdownItem,
|
|
|
+ )
|
|
|
+ .icon-wrapper(
|
|
|
+ *ngIf='hasIcons(button.submenuItems)',
|
|
|
+ [fastHtmlBind]='item.icon'
|
|
|
+ )
|
|
|
+ div([class.ml-3]='hasIcons(button.submenuItems)') {{item.title}}
|
|
|
|
|
|
- .btn-group.background
|
|
|
- .d-flex(
|
|
|
- *ngFor='let button of rightToolbarButtons',
|
|
|
- ngbDropdown,
|
|
|
- (openChange)='generateButtonSubmenu(button)',
|
|
|
- )
|
|
|
- button.btn.btn-secondary.btn-tab-bar(
|
|
|
- [title]='button.title',
|
|
|
- (click)='button.click && button.click()',
|
|
|
- [fastHtmlBind]='button.icon',
|
|
|
- ngbDropdownToggle,
|
|
|
- )
|
|
|
- div(*ngIf='button.submenu', ngbDropdownMenu)
|
|
|
- button.dropdown-item.d-flex.align-items-center(
|
|
|
- *ngFor='let item of button.submenuItems',
|
|
|
- (click)='item.click()',
|
|
|
- ngbDropdownItem,
|
|
|
- )
|
|
|
- .icon-wrapper(
|
|
|
- *ngIf='hasIcons(button.submenuItems)',
|
|
|
- [fastHtmlBind]='item.icon'
|
|
|
- )
|
|
|
- div([class.ml-3]='hasIcons(button.submenuItems)') {{item.title}}
|
|
|
+ button.btn.btn-secondary.btn-tab-bar.btn-update(
|
|
|
+ *ngIf='updatesAvailable',
|
|
|
+ title='Update available - Click to install',
|
|
|
+ (click)='updateApp()',
|
|
|
+ [fastHtmlBind]='updateIcon'
|
|
|
+ )
|
|
|
|
|
|
- button.btn.btn-secondary.btn-tab-bar.btn-update(
|
|
|
- *ngIf='updatesAvailable',
|
|
|
- title='Update available - Click to install',
|
|
|
- (click)='updateApp()',
|
|
|
- [fastHtmlBind]='updateIcon'
|
|
|
- )
|
|
|
+ window-controls.background(
|
|
|
+ *ngIf='config.store.appearance.frame == "thin" \
|
|
|
+ && (hostApp.platform == Platform.Windows || hostApp.platform == Platform.Linux)',
|
|
|
+ )
|
|
|
|
|
|
- window-controls.background(
|
|
|
- *ngIf='config.store.appearance.frame == "thin" \
|
|
|
- && (hostApp.platform == Platform.Windows || hostApp.platform == Platform.Linux)',
|
|
|
- )
|
|
|
+ start-page(*ngIf='ready && app.tabs.length == 0')
|
|
|
|
|
|
- start-page(*ngIf='ready && app.tabs.length == 0')
|
|
|
-
|
|
|
- tab-body(
|
|
|
- *ngFor='let tab of unsortedTabs',
|
|
|
- [active]='tab == app.activeTab',
|
|
|
- [tab]='tab',
|
|
|
- )
|
|
|
+ tab-body(
|
|
|
+ *ngFor='let tab of unsortedTabs',
|
|
|
+ [active]='tab == app.activeTab',
|
|
|
+ [tab]='tab',
|
|
|
+ )
|
|
|
|
|
|
ng-template(ngbModalContainer)
|