@oicl/openbridge-webcomponents 2.0.0-next.166 → 2.0.0-next.167

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.
@@ -50,6 +50,7 @@ let ObcIntegrationBar = class extends LitElement {
50
50
  this.fleetButtonSelected = false;
51
51
  this.fleetButtonActivated = false;
52
52
  this.fleetButtonLabel = "Fleet";
53
+ this.hasRightTrayLeading = false;
53
54
  this.buttonsOnBar = false;
54
55
  }
55
56
  onFleetButtonClick() {
@@ -126,6 +127,7 @@ let ObcIntegrationBar = class extends LitElement {
126
127
  "right-content-container": true
127
128
  })}
128
129
  >
130
+ ${this.hasRightTrayLeading ? html`<slot name="right-tray-leading"></slot>` : nothing}
129
131
  ${this.showAlertButton ? html`<obc-icon-button
130
132
  class=${classMap({
131
133
  "alert-button": true,
@@ -285,6 +287,9 @@ __decorateClass([
285
287
  __decorateClass([
286
288
  property({ type: String })
287
289
  ], ObcIntegrationBar.prototype, "fleetButtonLabel", 2);
290
+ __decorateClass([
291
+ property({ type: Boolean })
292
+ ], ObcIntegrationBar.prototype, "hasRightTrayLeading", 2);
288
293
  __decorateClass([
289
294
  state()
290
295
  ], ObcIntegrationBar.prototype, "buttonsOnBar", 2);
@@ -1 +1 @@
1
- {"version":3,"file":"integration-bar.js","sources":["../../../src/integration-systems/integration-bar/integration-bar.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS, nothing} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './integration-bar.css?inline';\nimport '../integration-tabs/integration-tabs.js';\nimport '../integration-button/integration-button.js';\nimport {\n IntegrationButtonType,\n IntegrationButtonVariant,\n} from '../integration-button/integration-button.js';\nimport '../../components/clock/clock.js';\nimport '../../components/icon-button/icon-button.js';\nimport '../../icons/icon-palette-day-night-iec.js';\nimport '../../icons/icon-user.js';\nimport '../../icons/icon-configure.js';\nimport '../../icons/icon-notification.js';\nimport '../../icons/icon-home.js';\nimport '../../icons/icon-ship.js';\nimport '../../icons/icon-screen-desk.js';\nimport '../../icons/icon-alerts.js';\nimport '../../icons/icon-link.js';\nimport {property, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {msg} from '@lit/localize';\n\n/**\n * `<obc-integration-bar>` – A compact top-level integration header for vessel and system navigation controls.\n *\n * Provides a configurable integration bar with home/navigation controls, optional fleet and vessel selection,\n * and optional utility actions such as alerts, notifications, screen, system, dimming, user, and clock.\n *\n * @property hideHomeButton - Hides the home button when true\n * @property showClock - Toggles rendering of the clock slot\n * @property showLinkButton - Toggles visibility of link button\n * @property linkButtonActivated - Activated state of link button\n * @property showUserButton - Toggles visibility of user button\n * @property userButtonActivated - Activated state of user button\n * @property showDimmingButton - Toggles visibility of dimming button\n * @property dimmingButtonActivated - Activated state of dimming button\n * @property showSystemButton - Toggles visibility of system button\n * @property systemButtonActivated - Activated state of system button\n * @property showScreenButton - Toggles visibility of screen button\n * @property screenButtonActivated - Activated state of screen button\n * @property showNotificationButton - Toggles visibility of notification button\n * @property notificationButtonActivated - Activated state of notification button\n * @property showAlertButton - Toggles visibility of alert button\n * @property alertButtonActivated - Activated state of alert button\n * @property showFleetButton - Toggles visibility of fleet button\n * @property fleetButtonSelected - Selected state of fleet button\n * @property fleetButtonActivated - Active state of fleet button while selection is pending\n * @property fleetButtonLabel - Label for the fleet button\n * @slot clock - Custom clock content, rendered when `showClock` is true\n * @slot integration-buttons - Regular vessel integration buttons\n * @slot hug-buttons - Compact vessel integration buttons; slotted integration buttons are forced to hug type\n * @fires {CustomEvent} fleet-button-click - Fired when the fleet button is clicked\n * @fires {CustomEvent} link-button-clicked - Fired when the link button is clicked\n * @fires {CustomEvent} alert-button-clicked - Fired when the alert button is clicked\n * @fires {CustomEvent} notification-button-clicked - Fired when the notification button is clicked\n * @fires {CustomEvent} screen-button-clicked - Fired when the screen button is clicked\n * @fires {CustomEvent} system-button-clicked - Fired when the system button is clicked\n * @fires {CustomEvent} dimming-button-clicked - Fired when the dimming button is clicked\n * @fires {CustomEvent} user-button-clicked - Fired when the user button is clicked\n * @experimental\n */\n@customElement('obc-integration-bar')\nexport class ObcIntegrationBar extends LitElement {\n @property({type: Boolean}) hideHomeButton = false;\n @property({type: Boolean}) showClock = false;\n @property({type: Boolean}) showLinkButton = false;\n @property({type: Boolean}) linkButtonActivated = false;\n @property({type: Boolean}) showUserButton = false;\n @property({type: Boolean}) userButtonActivated = false;\n @property({type: Boolean}) showDimmingButton = false;\n @property({type: Boolean}) dimmingButtonActivated = false;\n @property({type: Boolean}) showSystemButton = false;\n @property({type: Boolean}) systemButtonActivated = false;\n @property({type: Boolean}) showScreenButton = false;\n @property({type: Boolean}) screenButtonActivated = false;\n @property({type: Boolean}) showNotificationButton = false;\n @property({type: Boolean}) notificationButtonActivated = false;\n @property({type: Boolean}) showAlertButton = false;\n @property({type: Boolean}) alertButtonActivated = false;\n @property({type: Boolean}) showFleetButton = false;\n @property({type: Boolean}) fleetButtonSelected = false;\n @property({type: Boolean}) fleetButtonActivated = false;\n @property({type: String}) fleetButtonLabel = 'Fleet';\n\n @state() private buttonsOnBar = false;\n\n private onFleetButtonClick() {\n this.dispatchEvent(new CustomEvent('fleet-button-click'));\n }\n\n private onHugButtonsSlotChange(event: Event) {\n const slot = event.currentTarget as HTMLSlotElement;\n const assignedElements = slot.assignedElements({flatten: true});\n\n assignedElements.forEach((element) => {\n if (element.tagName === 'OBC-INTEGRATION-BUTTON') {\n const integrationButton = element as unknown as HTMLElement & {\n type: IntegrationButtonType;\n };\n integrationButton.type = IntegrationButtonType.hug;\n }\n });\n this.buttonsOnBar = true;\n }\n\n private onButtonsSlotChange() {\n this.buttonsOnBar = true;\n }\n\n override render() {\n const isFleetButtonAnchored = this.fleetButtonActivated;\n return html`\n <nav class=\"wrapper\">\n <div class=\"content-container\">\n ${\n !this.hideHomeButton\n ? html`<obc-icon-button\n class=\"home-button\"\n variant=\"integration\"\n aria-label=${msg('Home')}\n >\n <obi-home></obi-home>\n </obc-icon-button>`\n : null\n }\n ${\n this.showLinkButton\n ? html`<obc-icon-button\n class=${classMap({\n 'link-button': true,\n activated: this.linkButtonActivated,\n })}\n part=\"link-button\"\n variant=\"integration\"\n aria-label=${msg('Link')}\n @click=${() =>\n this.dispatchEvent(new CustomEvent('link-button-clicked'))}\n ?activated=${this.linkButtonActivated}\n >\n <obi-link></obi-link>\n </obc-icon-button>`\n : null\n }\n <div class=${classMap({'fleet-vessel-container': true})}>\n ${\n this.showFleetButton\n ? html`<obc-integration-button\n class=\"fleet-button\"\n .variant=${IntegrationButtonVariant.normal}\n ?selected=${this.fleetButtonSelected}\n ?activated=${this.fleetButtonActivated}\n style=${\n isFleetButtonAnchored\n ? 'anchor-name: --integration-menu-anchor;'\n : ''\n }\n @click=${() => this.onFleetButtonClick()}\n >\n <span slot=\"label\">${this.fleetButtonLabel}</span>\n </obc-integration-button>`\n : nothing\n }\n <div class=\"vessel-container\">\n ${\n this.buttonsOnBar\n ? nothing\n : html`<div class=\"vessel-button-placeholder\"></div>`\n }\n <slot\n class=\"hug-buttons-slot\"\n name=\"hug-buttons\"\n @slotchange=${this.onHugButtonsSlotChange}\n ></slot>\n <slot\n class=\"integration-buttons-slot\"\n name=\"integration-buttons\"\n @slotchange=${this.onButtonsSlotChange}\n ></slot>\n </div>\n </div>\n </div>\n <div\n class=${classMap({\n 'buttons-on-bar': this.buttonsOnBar,\n 'right-content-container': true,\n })}\n >\n ${\n this.showAlertButton\n ? html`<obc-icon-button\n class=${classMap({\n 'alert-button': true,\n activated: this.alertButtonActivated,\n })}\n part=\"alert-button\"\n variant=\"integration\"\n aria-label=${msg('Alerts')}\n style=${\n this.alertButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''\n }\n @click=${() =>\n this.dispatchEvent(new CustomEvent('alert-button-clicked'))}\n ?activated=${this.alertButtonActivated}\n >\n <obi-alerts></obi-alerts>\n </obc-icon-button>`\n : null\n }\n ${\n this.showNotificationButton\n ? html`<obc-icon-button\n class=${classMap({\n 'notification-button': true,\n activated: this.notificationButtonActivated,\n })}\n part=\"notification-button\"\n variant=\"integration\"\n aria-label=${msg('Notifications')}\n style=${\n this.notificationButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''\n }\n @click=${() =>\n this.dispatchEvent(\n new CustomEvent('notification-button-clicked')\n )}\n ?activated=${this.notificationButtonActivated}\n >\n <obi-notification></obi-notification>\n </obc-icon-button>`\n : null\n }\n ${\n this.showScreenButton\n ? html`<obc-icon-button\n class=${classMap({\n 'screen-button': true,\n activated: this.screenButtonActivated,\n })}\n part=\"screen-button\"\n variant=\"integration\"\n aria-label=${msg('Screen')}\n style=${\n this.screenButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''\n }\n @click=${() =>\n this.dispatchEvent(\n new CustomEvent('screen-button-clicked')\n )}\n ?activated=${this.screenButtonActivated}\n >\n <obi-screen-desk></obi-screen-desk>\n </obc-icon-button>`\n : null\n }\n ${\n this.showSystemButton\n ? html`<obc-icon-button\n class=${classMap({\n 'system-button': true,\n activated: this.systemButtonActivated,\n })}\n part=\"system-button\"\n variant=\"integration\"\n aria-label=${msg('System')}\n style=${\n this.systemButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''\n }\n @click=${() =>\n this.dispatchEvent(\n new CustomEvent('system-button-clicked')\n )}\n ?activated=${this.systemButtonActivated}\n >\n <obi-configure></obi-configure>\n </obc-icon-button>`\n : null\n }\n ${\n this.showDimmingButton\n ? html`<obc-icon-button\n class=${classMap({\n 'dimming-button': true,\n activated: this.dimmingButtonActivated,\n })}\n part=\"dimming-button\"\n variant=\"integration\"\n aria-label=${msg('Dimming')}\n style=${\n this.dimmingButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''\n }\n @click=${() =>\n this.dispatchEvent(\n new CustomEvent('dimming-button-clicked')\n )}\n ?activated=${this.dimmingButtonActivated}\n >\n <obi-palette-day-night-iec></obi-palette-day-night-iec>\n </obc-icon-button>`\n : null\n }\n ${\n this.showUserButton\n ? html`<obc-icon-button\n class=${classMap({\n 'user-button': true,\n activated: this.userButtonActivated,\n })}\n part=\"user-button\"\n variant=\"integration\"\n aria-label=${msg('User')}\n style=${\n this.userButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''\n }\n @click=${() =>\n this.dispatchEvent(new CustomEvent('user-button-clicked'))}\n ?activated=${this.userButtonActivated}\n >\n <obi-user></obi-user>\n </obc-icon-button>`\n : null\n }\n ${this.showClock ? html`<slot name=\"clock\"></slot>` : null}\n </div>\n </nav>\n `;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-integration-bar': ObcIntegrationBar;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integration-bar.js","sources":["../../../src/integration-systems/integration-bar/integration-bar.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS, nothing} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './integration-bar.css?inline';\nimport '../integration-tabs/integration-tabs.js';\nimport '../integration-button/integration-button.js';\nimport {\n IntegrationButtonType,\n IntegrationButtonVariant,\n} from '../integration-button/integration-button.js';\nimport '../../components/clock/clock.js';\nimport '../../components/icon-button/icon-button.js';\nimport '../../icons/icon-palette-day-night-iec.js';\nimport '../../icons/icon-user.js';\nimport '../../icons/icon-configure.js';\nimport '../../icons/icon-notification.js';\nimport '../../icons/icon-home.js';\nimport '../../icons/icon-ship.js';\nimport '../../icons/icon-screen-desk.js';\nimport '../../icons/icon-alerts.js';\nimport '../../icons/icon-link.js';\nimport {property, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {msg} from '@lit/localize';\n\n/**\n * `<obc-integration-bar>` – A compact top-level integration header for vessel and system navigation controls.\n *\n * Provides a configurable integration bar with home/navigation controls, optional fleet and vessel selection,\n * and optional utility actions such as alerts, notifications, screen, system, dimming, user, and clock.\n *\n * @property hideHomeButton - Hides the home button when true\n * @property showClock - Toggles rendering of the clock slot\n * @property showLinkButton - Toggles visibility of link button\n * @property linkButtonActivated - Activated state of link button\n * @property showUserButton - Toggles visibility of user button\n * @property userButtonActivated - Activated state of user button\n * @property showDimmingButton - Toggles visibility of dimming button\n * @property dimmingButtonActivated - Activated state of dimming button\n * @property showSystemButton - Toggles visibility of system button\n * @property systemButtonActivated - Activated state of system button\n * @property showScreenButton - Toggles visibility of screen button\n * @property screenButtonActivated - Activated state of screen button\n * @property showNotificationButton - Toggles visibility of notification button\n * @property notificationButtonActivated - Activated state of notification button\n * @property showAlertButton - Toggles visibility of alert button\n * @property alertButtonActivated - Activated state of alert button\n * @property showFleetButton - Toggles visibility of fleet button\n * @property fleetButtonSelected - Selected state of fleet button\n * @property fleetButtonActivated - Active state of fleet button while selection is pending\n * @property fleetButtonLabel - Label for the fleet button\n * @property hasRightTrayLeading - Renders the `right-tray-leading` slot first in the right-hand button group\n * @slot clock - Custom clock content, rendered when `showClock` is true\n * @slot integration-buttons - Regular vessel integration buttons\n * @slot hug-buttons - Compact vessel integration buttons; slotted integration buttons are forced to hug type\n * @slot right-tray-leading - Consumer-defined controls, placed first in the right-hand button group; rendered when `hasRightTrayLeading` is true\n * @fires {CustomEvent} fleet-button-click - Fired when the fleet button is clicked\n * @fires {CustomEvent} link-button-clicked - Fired when the link button is clicked\n * @fires {CustomEvent} alert-button-clicked - Fired when the alert button is clicked\n * @fires {CustomEvent} notification-button-clicked - Fired when the notification button is clicked\n * @fires {CustomEvent} screen-button-clicked - Fired when the screen button is clicked\n * @fires {CustomEvent} system-button-clicked - Fired when the system button is clicked\n * @fires {CustomEvent} dimming-button-clicked - Fired when the dimming button is clicked\n * @fires {CustomEvent} user-button-clicked - Fired when the user button is clicked\n * @experimental\n */\n@customElement('obc-integration-bar')\nexport class ObcIntegrationBar extends LitElement {\n @property({type: Boolean}) hideHomeButton = false;\n @property({type: Boolean}) showClock = false;\n @property({type: Boolean}) showLinkButton = false;\n @property({type: Boolean}) linkButtonActivated = false;\n @property({type: Boolean}) showUserButton = false;\n @property({type: Boolean}) userButtonActivated = false;\n @property({type: Boolean}) showDimmingButton = false;\n @property({type: Boolean}) dimmingButtonActivated = false;\n @property({type: Boolean}) showSystemButton = false;\n @property({type: Boolean}) systemButtonActivated = false;\n @property({type: Boolean}) showScreenButton = false;\n @property({type: Boolean}) screenButtonActivated = false;\n @property({type: Boolean}) showNotificationButton = false;\n @property({type: Boolean}) notificationButtonActivated = false;\n @property({type: Boolean}) showAlertButton = false;\n @property({type: Boolean}) alertButtonActivated = false;\n @property({type: Boolean}) showFleetButton = false;\n @property({type: Boolean}) fleetButtonSelected = false;\n @property({type: Boolean}) fleetButtonActivated = false;\n @property({type: String}) fleetButtonLabel = 'Fleet';\n @property({type: Boolean}) hasRightTrayLeading = false;\n\n @state() private buttonsOnBar = false;\n\n private onFleetButtonClick() {\n this.dispatchEvent(new CustomEvent('fleet-button-click'));\n }\n\n private onHugButtonsSlotChange(event: Event) {\n const slot = event.currentTarget as HTMLSlotElement;\n const assignedElements = slot.assignedElements({flatten: true});\n\n assignedElements.forEach((element) => {\n if (element.tagName === 'OBC-INTEGRATION-BUTTON') {\n const integrationButton = element as unknown as HTMLElement & {\n type: IntegrationButtonType;\n };\n integrationButton.type = IntegrationButtonType.hug;\n }\n });\n this.buttonsOnBar = true;\n }\n\n private onButtonsSlotChange() {\n this.buttonsOnBar = true;\n }\n\n override render() {\n const isFleetButtonAnchored = this.fleetButtonActivated;\n return html`\n <nav class=\"wrapper\">\n <div class=\"content-container\">\n ${\n !this.hideHomeButton\n ? html`<obc-icon-button\n class=\"home-button\"\n variant=\"integration\"\n aria-label=${msg('Home')}\n >\n <obi-home></obi-home>\n </obc-icon-button>`\n : null\n }\n ${\n this.showLinkButton\n ? html`<obc-icon-button\n class=${classMap({\n 'link-button': true,\n activated: this.linkButtonActivated,\n })}\n part=\"link-button\"\n variant=\"integration\"\n aria-label=${msg('Link')}\n @click=${() =>\n this.dispatchEvent(new CustomEvent('link-button-clicked'))}\n ?activated=${this.linkButtonActivated}\n >\n <obi-link></obi-link>\n </obc-icon-button>`\n : null\n }\n <div class=${classMap({'fleet-vessel-container': true})}>\n ${\n this.showFleetButton\n ? html`<obc-integration-button\n class=\"fleet-button\"\n .variant=${IntegrationButtonVariant.normal}\n ?selected=${this.fleetButtonSelected}\n ?activated=${this.fleetButtonActivated}\n style=${\n isFleetButtonAnchored\n ? 'anchor-name: --integration-menu-anchor;'\n : ''\n }\n @click=${() => this.onFleetButtonClick()}\n >\n <span slot=\"label\">${this.fleetButtonLabel}</span>\n </obc-integration-button>`\n : nothing\n }\n <div class=\"vessel-container\">\n ${\n this.buttonsOnBar\n ? nothing\n : html`<div class=\"vessel-button-placeholder\"></div>`\n }\n <slot\n class=\"hug-buttons-slot\"\n name=\"hug-buttons\"\n @slotchange=${this.onHugButtonsSlotChange}\n ></slot>\n <slot\n class=\"integration-buttons-slot\"\n name=\"integration-buttons\"\n @slotchange=${this.onButtonsSlotChange}\n ></slot>\n </div>\n </div>\n </div>\n <div\n class=${classMap({\n 'buttons-on-bar': this.buttonsOnBar,\n 'right-content-container': true,\n })}\n >\n ${\n this.hasRightTrayLeading\n ? html`<slot name=\"right-tray-leading\"></slot>`\n : nothing\n }\n ${\n this.showAlertButton\n ? html`<obc-icon-button\n class=${classMap({\n 'alert-button': true,\n activated: this.alertButtonActivated,\n })}\n part=\"alert-button\"\n variant=\"integration\"\n aria-label=${msg('Alerts')}\n style=${\n this.alertButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''\n }\n @click=${() =>\n this.dispatchEvent(new CustomEvent('alert-button-clicked'))}\n ?activated=${this.alertButtonActivated}\n >\n <obi-alerts></obi-alerts>\n </obc-icon-button>`\n : null\n }\n ${\n this.showNotificationButton\n ? html`<obc-icon-button\n class=${classMap({\n 'notification-button': true,\n activated: this.notificationButtonActivated,\n })}\n part=\"notification-button\"\n variant=\"integration\"\n aria-label=${msg('Notifications')}\n style=${\n this.notificationButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''\n }\n @click=${() =>\n this.dispatchEvent(\n new CustomEvent('notification-button-clicked')\n )}\n ?activated=${this.notificationButtonActivated}\n >\n <obi-notification></obi-notification>\n </obc-icon-button>`\n : null\n }\n ${\n this.showScreenButton\n ? html`<obc-icon-button\n class=${classMap({\n 'screen-button': true,\n activated: this.screenButtonActivated,\n })}\n part=\"screen-button\"\n variant=\"integration\"\n aria-label=${msg('Screen')}\n style=${\n this.screenButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''\n }\n @click=${() =>\n this.dispatchEvent(\n new CustomEvent('screen-button-clicked')\n )}\n ?activated=${this.screenButtonActivated}\n >\n <obi-screen-desk></obi-screen-desk>\n </obc-icon-button>`\n : null\n }\n ${\n this.showSystemButton\n ? html`<obc-icon-button\n class=${classMap({\n 'system-button': true,\n activated: this.systemButtonActivated,\n })}\n part=\"system-button\"\n variant=\"integration\"\n aria-label=${msg('System')}\n style=${\n this.systemButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''\n }\n @click=${() =>\n this.dispatchEvent(\n new CustomEvent('system-button-clicked')\n )}\n ?activated=${this.systemButtonActivated}\n >\n <obi-configure></obi-configure>\n </obc-icon-button>`\n : null\n }\n ${\n this.showDimmingButton\n ? html`<obc-icon-button\n class=${classMap({\n 'dimming-button': true,\n activated: this.dimmingButtonActivated,\n })}\n part=\"dimming-button\"\n variant=\"integration\"\n aria-label=${msg('Dimming')}\n style=${\n this.dimmingButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''\n }\n @click=${() =>\n this.dispatchEvent(\n new CustomEvent('dimming-button-clicked')\n )}\n ?activated=${this.dimmingButtonActivated}\n >\n <obi-palette-day-night-iec></obi-palette-day-night-iec>\n </obc-icon-button>`\n : null\n }\n ${\n this.showUserButton\n ? html`<obc-icon-button\n class=${classMap({\n 'user-button': true,\n activated: this.userButtonActivated,\n })}\n part=\"user-button\"\n variant=\"integration\"\n aria-label=${msg('User')}\n style=${\n this.userButtonActivated\n ? 'anchor-name: --settings-menu-anchor;'\n : ''\n }\n @click=${() =>\n this.dispatchEvent(new CustomEvent('user-button-clicked'))}\n ?activated=${this.userButtonActivated}\n >\n <obi-user></obi-user>\n </obc-icon-button>`\n : null\n }\n ${this.showClock ? html`<slot name=\"clock\"></slot>` : null}\n </div>\n </nav>\n `;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-integration-bar': ObcIntegrationBar;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -43,6 +43,7 @@ import '../../icons/icon-link.js';
43
43
  * @property systemButtonActivated - Pressed styling for the system button.
44
44
  * @availableWhen systemButtonActivated showSystemButton==true
45
45
  * @property nStatusFields - How many `status-icon-N`/`status-label-N` slot pairs are rendered.
46
+ * @property hasRightTrayLeading - Renders the `right-tray-leading` slot first in the right-hand button group.
46
47
  *
47
48
  * @slot vessel-selector - Vessel selector content
48
49
  * @slot status-label-1 - Label for the first status field
@@ -52,6 +53,7 @@ import '../../icons/icon-link.js';
52
53
  * @slot status-label-3 - Label for the third status field
53
54
  * @slot status-icon-3 - Icon for the third status field
54
55
  * @slot clock - Custom clock content, rendered when `showClock` is true
56
+ * @slot right-tray-leading - Consumer-defined controls, placed first in the right-hand button group; rendered when `hasRightTrayLeading` is true
55
57
  *
56
58
  * @fires {CustomEvent} home-button-clicked - Fired when the home button is clicked
57
59
  * @fires {CustomEvent} link-button-clicked - Fired when the link button is clicked
@@ -144,6 +146,8 @@ export declare class ObcIntegrationBarDropdown extends LitElement {
144
146
  systemButtonActivated: boolean;
145
147
  /** How many `status-icon-N`/`status-label-N` slot pairs are rendered. */
146
148
  nStatusFields: number;
149
+ /** Renders the `right-tray-leading` slot first in the right-hand button group. */
150
+ hasRightTrayLeading: boolean;
147
151
  private renderStatusFields;
148
152
  private renderIconButton;
149
153
  render(): TemplateResult<1>;
@@ -1 +1 @@
1
- {"version":3,"file":"integration-bar-dropdown.d.ts","sourceRoot":"","sources":["../../../src/integration-systems/integration-bar-dropdown/integration-bar-dropdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAA4B,KAAK,cAAc,EAAC,MAAM,KAAK,CAAC;AAG9E,OAAO,yCAAyC,CAAC;AACjD,OAAO,iCAAiC,CAAC;AACzC,OAAO,6CAA6C,CAAC;AACrD,OAAO,2CAA2C,CAAC;AACnD,OAAO,0BAA0B,CAAC;AAClC,OAAO,+BAA+B,CAAC;AACvC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,0BAA0B,CAAC;AAClC,OAAO,iCAAiC,CAAC;AACzC,OAAO,4BAA4B,CAAC;AACpC,OAAO,0BAA0B,CAAC;AAKlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,qBACa,yBAA0B,SAAQ,UAAU;IAC5B,cAAc,UAAS;IACvB,mBAAmB,UAAS;IAC5B,cAAc,UAAS;IACvB,mBAAmB,UAAS;IAC5B,SAAS,UAAS;IAClB,eAAe,UAAS;IACxB,oBAAoB,UAAS;IAC7B,sBAAsB,UAAS;IAC/B,2BAA2B,UAAS;IACrC,iBAAiB,SAAK;IACrB,qBAAqB,UAAS;IAC9B,gBAAgB,UAAS;IACzB,qBAAqB,UAAS;IAC9B,cAAc,UAAS;IACvB,mBAAmB,UAAS;IAC5B,iBAAiB,UAAS;IAC1B,sBAAsB,UAAS;IAC/B,gBAAgB,UAAS;IACzB,qBAAqB,UAAS;IAC/B,aAAa,SAAK;IAE5C,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,gBAAgB;IAmBf,MAAM;IAoHf,OAAgB,MAAM,0BAA2B;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,8BAA8B,EAAE,yBAAyB,CAAC;KAC3D;CACF"}
1
+ {"version":3,"file":"integration-bar-dropdown.d.ts","sourceRoot":"","sources":["../../../src/integration-systems/integration-bar-dropdown/integration-bar-dropdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAA4B,KAAK,cAAc,EAAC,MAAM,KAAK,CAAC;AAG9E,OAAO,yCAAyC,CAAC;AACjD,OAAO,iCAAiC,CAAC;AACzC,OAAO,6CAA6C,CAAC;AACrD,OAAO,2CAA2C,CAAC;AACnD,OAAO,0BAA0B,CAAC;AAClC,OAAO,+BAA+B,CAAC;AACvC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,0BAA0B,CAAC;AAClC,OAAO,iCAAiC,CAAC;AACzC,OAAO,4BAA4B,CAAC;AACpC,OAAO,0BAA0B,CAAC;AAKlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,qBACa,yBAA0B,SAAQ,UAAU;IAC5B,cAAc,UAAS;IACvB,mBAAmB,UAAS;IAC5B,cAAc,UAAS;IACvB,mBAAmB,UAAS;IAC5B,SAAS,UAAS;IAClB,eAAe,UAAS;IACxB,oBAAoB,UAAS;IAC7B,sBAAsB,UAAS;IAC/B,2BAA2B,UAAS;IACrC,iBAAiB,SAAK;IACrB,qBAAqB,UAAS;IAC9B,gBAAgB,UAAS;IACzB,qBAAqB,UAAS;IAC9B,cAAc,UAAS;IACvB,mBAAmB,UAAS;IAC5B,iBAAiB,UAAS;IAC1B,sBAAsB,UAAS;IAC/B,gBAAgB,UAAS;IACzB,qBAAqB,UAAS;IAC/B,aAAa,SAAK;IACjB,mBAAmB,UAAS;IAEvD,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,gBAAgB;IAmBf,MAAM;IAyHf,OAAgB,MAAM,0BAA2B;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,8BAA8B,EAAE,yBAAyB,CAAC;KAC3D;CACF"}
@@ -48,6 +48,7 @@ let ObcIntegrationBarDropdown = class extends LitElement {
48
48
  this.showSystemButton = false;
49
49
  this.systemButtonActivated = false;
50
50
  this.nStatusFields = 0;
51
+ this.hasRightTrayLeading = false;
51
52
  }
52
53
  renderStatusFields() {
53
54
  if (this.nStatusFields <= 0) {
@@ -102,6 +103,7 @@ let ObcIntegrationBarDropdown = class extends LitElement {
102
103
  ${this.renderStatusFields()}
103
104
  </div>
104
105
  <div class="right-side">
106
+ ${this.hasRightTrayLeading ? html`<slot name="right-tray-leading"></slot>` : nothing}
105
107
  ${this.showAlertButton ? this.renderIconButton(
106
108
  "alert",
107
109
  this.alertButtonActivated,
@@ -219,6 +221,9 @@ __decorateClass([
219
221
  __decorateClass([
220
222
  property({ type: Number })
221
223
  ], ObcIntegrationBarDropdown.prototype, "nStatusFields", 2);
224
+ __decorateClass([
225
+ property({ type: Boolean })
226
+ ], ObcIntegrationBarDropdown.prototype, "hasRightTrayLeading", 2);
222
227
  ObcIntegrationBarDropdown = __decorateClass([
223
228
  customElement("obc-integration-bar-dropdown")
224
229
  ], ObcIntegrationBarDropdown);
@@ -1 +1 @@
1
- {"version":3,"file":"integration-bar-dropdown.js","sources":["../../../src/integration-systems/integration-bar-dropdown/integration-bar-dropdown.ts"],"sourcesContent":["import {LitElement, html, nothing, unsafeCSS, type TemplateResult} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './integration-bar-dropdown.css?inline';\nimport '../integration-tabs/integration-tabs.js';\nimport '../../components/clock/clock.js';\nimport '../../components/icon-button/icon-button.js';\nimport '../../icons/icon-palette-day-night-iec.js';\nimport '../../icons/icon-user.js';\nimport '../../icons/icon-configure.js';\nimport '../../icons/icon-notification.js';\nimport '../../icons/icon-home.js';\nimport '../../icons/icon-screen-desk.js';\nimport '../../icons/icon-alerts.js';\nimport '../../icons/icon-link.js';\nimport {NotificationButtonStyle} from '../../components/notification-button/notification-button.js';\nimport {property} from 'lit/decorators.js';\nimport {msg} from '@lit/localize';\n\n/**\n * `<obc-integration-bar-dropdown>` – A compact top-level integration header with a dropdown selector, status fields and system action buttons.\n *\n * @property showHomeButton - Home button at the left end of the bar.\n * @property homeButtonActivated - Pressed styling for the home button.\n * @availableWhen homeButtonActivated showHomeButton==true\n * @property showLinkButton - Link button, between home and the selector.\n * @property linkButtonActivated - Pressed styling for the link button.\n * @availableWhen linkButtonActivated showLinkButton==true\n * @property showClock - Renders the `clock` slot at the right end.\n * @property showAlertButton - Alert button, first in the right-hand group.\n * @property alertButtonActivated - Pressed styling for the alert button.\n * @availableWhen alertButtonActivated showAlertButton==true\n * @property showNotificationButton - Notification button, after the alert button.\n * @property notificationButtonActivated - Pressed styling; the count badge only appears in this state.\n * @availableWhen notificationButtonActivated showNotificationButton==true\n * @property notificationCount - Number drawn in the count badge.\n * @availableWhen notificationCount showNotificationButton==true && showNotificationCount==true && notificationButtonActivated==true\n * @property showNotificationCount - Draws the count badge on the notification button.\n * @availableWhen showNotificationCount showNotificationButton==true && notificationButtonActivated==true\n * @property showScreenButton - Screen button, after the notification button.\n * @property screenButtonActivated - Pressed styling for the screen button.\n * @availableWhen screenButtonActivated showScreenButton==true\n * @property showUserButton - User button, last before the clock.\n * @property userButtonActivated - Pressed styling for the user button.\n * @availableWhen userButtonActivated showUserButton==true\n * @property showDimmingButton - Dimming button, between system and user.\n * @property dimmingButtonActivated - Pressed styling for the dimming button.\n * @availableWhen dimmingButtonActivated showDimmingButton==true\n * @property showSystemButton - System button, after the screen button.\n * @property systemButtonActivated - Pressed styling for the system button.\n * @availableWhen systemButtonActivated showSystemButton==true\n * @property nStatusFields - How many `status-icon-N`/`status-label-N` slot pairs are rendered.\n *\n * @slot vessel-selector - Vessel selector content\n * @slot status-label-1 - Label for the first status field\n * @slot status-icon-1 - Icon for the first status field\n * @slot status-label-2 - Label for the second status field\n * @slot status-icon-2 - Icon for the second status field\n * @slot status-label-3 - Label for the third status field\n * @slot status-icon-3 - Icon for the third status field\n * @slot clock - Custom clock content, rendered when `showClock` is true\n *\n * @fires {CustomEvent} home-button-clicked - Fired when the home button is clicked\n * @fires {CustomEvent} link-button-clicked - Fired when the link button is clicked\n * @fires {CustomEvent} alert-button-clicked - Fired when the alert button is clicked\n * @fires {CustomEvent} dimming-button-clicked - Fired when the dimming button is clicked\n * @fires {CustomEvent} notification-button-clicked - Fired when the notification button is clicked\n * @fires {CustomEvent} screen-button-clicked - Fired when the screen button is clicked\n * @fires {CustomEvent} user-button-clicked - Fired when the user button is clicked\n * @fires {CustomEvent} system-button-clicked - Fired when the system button is clicked\n * @experimental\n */\n@customElement('obc-integration-bar-dropdown')\nexport class ObcIntegrationBarDropdown extends LitElement {\n @property({type: Boolean}) showHomeButton = false;\n @property({type: Boolean}) homeButtonActivated = false;\n @property({type: Boolean}) showLinkButton = false;\n @property({type: Boolean}) linkButtonActivated = false;\n @property({type: Boolean}) showClock = false;\n @property({type: Boolean}) showAlertButton = false;\n @property({type: Boolean}) alertButtonActivated = false;\n @property({type: Boolean}) showNotificationButton = false;\n @property({type: Boolean}) notificationButtonActivated = false;\n @property({type: Number}) notificationCount = 0;\n @property({type: Boolean}) showNotificationCount = false;\n @property({type: Boolean}) showScreenButton = false;\n @property({type: Boolean}) screenButtonActivated = false;\n @property({type: Boolean}) showUserButton = false;\n @property({type: Boolean}) userButtonActivated = false;\n @property({type: Boolean}) showDimmingButton = false;\n @property({type: Boolean}) dimmingButtonActivated = false;\n @property({type: Boolean}) showSystemButton = false;\n @property({type: Boolean}) systemButtonActivated = false;\n @property({type: Number}) nStatusFields = 0;\n\n private renderStatusFields() {\n if (this.nStatusFields <= 0) {\n return nothing;\n }\n const result = [];\n for (let i = 0; i < this.nStatusFields; i++) {\n if (i > 0) {\n result.push(html`<div class=\"divider\"></div>`);\n }\n result.push(html`\n <div class=\"status-item\">\n <slot class=\"status-icon\" name=\"status-icon-${i + 1}\"></slot>\n <slot class=\"status-label\" name=\"status-label-${i + 1}\"></slot>\n </div>\n `);\n }\n return html`<div class=\"status\">${result}</div>`;\n }\n\n // The event name stays a literal at each call site so `cem analyze` can read it.\n private renderIconButton(\n name: string,\n activated: boolean,\n label: string,\n icon: TemplateResult,\n onClick: () => void\n ) {\n return html`<obc-icon-button\n class=\"${name}-button\"\n part=\"${name}-button\"\n variant=\"integration\"\n aria-label=${label}\n @click=${onClick}\n ?activated=${activated}\n >\n ${icon}\n </obc-icon-button>`;\n }\n\n override render() {\n return html`\n <div class=\"wrapper\">\n <div class=\"left-side\">\n ${\n this.showHomeButton\n ? this.renderIconButton(\n 'home',\n this.homeButtonActivated,\n msg('Home'),\n html`<obi-home></obi-home>`,\n () =>\n this.dispatchEvent(new CustomEvent('home-button-clicked'))\n )\n : nothing\n }\n ${\n this.showLinkButton\n ? this.renderIconButton(\n 'link',\n this.linkButtonActivated,\n msg('Link'),\n html`<obi-link></obi-link>`,\n () =>\n this.dispatchEvent(new CustomEvent('link-button-clicked'))\n )\n : nothing\n }\n <slot name=\"vessel-selector\"></slot>\n ${this.renderStatusFields()}\n </div>\n <div class=\"right-side\">\n ${\n this.showAlertButton\n ? this.renderIconButton(\n 'alert',\n this.alertButtonActivated,\n msg('Alerts'),\n html`<obi-alerts></obi-alerts>`,\n () =>\n this.dispatchEvent(new CustomEvent('alert-button-clicked'))\n )\n : nothing\n }\n ${\n this.showNotificationButton\n ? // TODO(designer): keep the Enhanced badge button here, or match the\n // sibling bar's plain notification icon button? (#624)\n html`<obc-notification-button\n @click=${() =>\n this.dispatchEvent(\n new CustomEvent('notification-button-clicked')\n )}\n .buttonStyle=${NotificationButtonStyle.Enhanced}\n .showCount=${this.showNotificationCount}\n .count=${this.notificationCount}\n ?isActive=${this.notificationButtonActivated}\n ></obc-notification-button>`\n : nothing\n }\n ${\n this.showScreenButton\n ? this.renderIconButton(\n 'screen',\n this.screenButtonActivated,\n msg('Screen'),\n html`<obi-screen-desk></obi-screen-desk>`,\n () =>\n this.dispatchEvent(new CustomEvent('screen-button-clicked'))\n )\n : nothing\n }\n ${\n this.showSystemButton\n ? this.renderIconButton(\n 'system',\n this.systemButtonActivated,\n msg('System'),\n html`<obi-configure></obi-configure>`,\n () =>\n this.dispatchEvent(new CustomEvent('system-button-clicked'))\n )\n : nothing\n }\n ${\n this.showDimmingButton\n ? this.renderIconButton(\n 'dimming',\n this.dimmingButtonActivated,\n msg('Dimming'),\n html`<obi-palette-day-night-iec></obi-palette-day-night-iec>`,\n () =>\n this.dispatchEvent(\n new CustomEvent('dimming-button-clicked')\n )\n )\n : nothing\n }\n ${\n this.showUserButton\n ? this.renderIconButton(\n 'user',\n this.userButtonActivated,\n msg('User'),\n html`<obi-user></obi-user>`,\n () =>\n this.dispatchEvent(new CustomEvent('user-button-clicked'))\n )\n : nothing\n }\n ${this.showClock ? html`<slot name=\"clock\"></slot>` : nothing}\n </div>\n </div>\n `;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-integration-bar-dropdown': ObcIntegrationBarDropdown;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integration-bar-dropdown.js","sources":["../../../src/integration-systems/integration-bar-dropdown/integration-bar-dropdown.ts"],"sourcesContent":["import {LitElement, html, nothing, unsafeCSS, type TemplateResult} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './integration-bar-dropdown.css?inline';\nimport '../integration-tabs/integration-tabs.js';\nimport '../../components/clock/clock.js';\nimport '../../components/icon-button/icon-button.js';\nimport '../../icons/icon-palette-day-night-iec.js';\nimport '../../icons/icon-user.js';\nimport '../../icons/icon-configure.js';\nimport '../../icons/icon-notification.js';\nimport '../../icons/icon-home.js';\nimport '../../icons/icon-screen-desk.js';\nimport '../../icons/icon-alerts.js';\nimport '../../icons/icon-link.js';\nimport {NotificationButtonStyle} from '../../components/notification-button/notification-button.js';\nimport {property} from 'lit/decorators.js';\nimport {msg} from '@lit/localize';\n\n/**\n * `<obc-integration-bar-dropdown>` – A compact top-level integration header with a dropdown selector, status fields and system action buttons.\n *\n * @property showHomeButton - Home button at the left end of the bar.\n * @property homeButtonActivated - Pressed styling for the home button.\n * @availableWhen homeButtonActivated showHomeButton==true\n * @property showLinkButton - Link button, between home and the selector.\n * @property linkButtonActivated - Pressed styling for the link button.\n * @availableWhen linkButtonActivated showLinkButton==true\n * @property showClock - Renders the `clock` slot at the right end.\n * @property showAlertButton - Alert button, first in the right-hand group.\n * @property alertButtonActivated - Pressed styling for the alert button.\n * @availableWhen alertButtonActivated showAlertButton==true\n * @property showNotificationButton - Notification button, after the alert button.\n * @property notificationButtonActivated - Pressed styling; the count badge only appears in this state.\n * @availableWhen notificationButtonActivated showNotificationButton==true\n * @property notificationCount - Number drawn in the count badge.\n * @availableWhen notificationCount showNotificationButton==true && showNotificationCount==true && notificationButtonActivated==true\n * @property showNotificationCount - Draws the count badge on the notification button.\n * @availableWhen showNotificationCount showNotificationButton==true && notificationButtonActivated==true\n * @property showScreenButton - Screen button, after the notification button.\n * @property screenButtonActivated - Pressed styling for the screen button.\n * @availableWhen screenButtonActivated showScreenButton==true\n * @property showUserButton - User button, last before the clock.\n * @property userButtonActivated - Pressed styling for the user button.\n * @availableWhen userButtonActivated showUserButton==true\n * @property showDimmingButton - Dimming button, between system and user.\n * @property dimmingButtonActivated - Pressed styling for the dimming button.\n * @availableWhen dimmingButtonActivated showDimmingButton==true\n * @property showSystemButton - System button, after the screen button.\n * @property systemButtonActivated - Pressed styling for the system button.\n * @availableWhen systemButtonActivated showSystemButton==true\n * @property nStatusFields - How many `status-icon-N`/`status-label-N` slot pairs are rendered.\n * @property hasRightTrayLeading - Renders the `right-tray-leading` slot first in the right-hand button group.\n *\n * @slot vessel-selector - Vessel selector content\n * @slot status-label-1 - Label for the first status field\n * @slot status-icon-1 - Icon for the first status field\n * @slot status-label-2 - Label for the second status field\n * @slot status-icon-2 - Icon for the second status field\n * @slot status-label-3 - Label for the third status field\n * @slot status-icon-3 - Icon for the third status field\n * @slot clock - Custom clock content, rendered when `showClock` is true\n * @slot right-tray-leading - Consumer-defined controls, placed first in the right-hand button group; rendered when `hasRightTrayLeading` is true\n *\n * @fires {CustomEvent} home-button-clicked - Fired when the home button is clicked\n * @fires {CustomEvent} link-button-clicked - Fired when the link button is clicked\n * @fires {CustomEvent} alert-button-clicked - Fired when the alert button is clicked\n * @fires {CustomEvent} dimming-button-clicked - Fired when the dimming button is clicked\n * @fires {CustomEvent} notification-button-clicked - Fired when the notification button is clicked\n * @fires {CustomEvent} screen-button-clicked - Fired when the screen button is clicked\n * @fires {CustomEvent} user-button-clicked - Fired when the user button is clicked\n * @fires {CustomEvent} system-button-clicked - Fired when the system button is clicked\n * @experimental\n */\n@customElement('obc-integration-bar-dropdown')\nexport class ObcIntegrationBarDropdown extends LitElement {\n @property({type: Boolean}) showHomeButton = false;\n @property({type: Boolean}) homeButtonActivated = false;\n @property({type: Boolean}) showLinkButton = false;\n @property({type: Boolean}) linkButtonActivated = false;\n @property({type: Boolean}) showClock = false;\n @property({type: Boolean}) showAlertButton = false;\n @property({type: Boolean}) alertButtonActivated = false;\n @property({type: Boolean}) showNotificationButton = false;\n @property({type: Boolean}) notificationButtonActivated = false;\n @property({type: Number}) notificationCount = 0;\n @property({type: Boolean}) showNotificationCount = false;\n @property({type: Boolean}) showScreenButton = false;\n @property({type: Boolean}) screenButtonActivated = false;\n @property({type: Boolean}) showUserButton = false;\n @property({type: Boolean}) userButtonActivated = false;\n @property({type: Boolean}) showDimmingButton = false;\n @property({type: Boolean}) dimmingButtonActivated = false;\n @property({type: Boolean}) showSystemButton = false;\n @property({type: Boolean}) systemButtonActivated = false;\n @property({type: Number}) nStatusFields = 0;\n @property({type: Boolean}) hasRightTrayLeading = false;\n\n private renderStatusFields() {\n if (this.nStatusFields <= 0) {\n return nothing;\n }\n const result = [];\n for (let i = 0; i < this.nStatusFields; i++) {\n if (i > 0) {\n result.push(html`<div class=\"divider\"></div>`);\n }\n result.push(html`\n <div class=\"status-item\">\n <slot class=\"status-icon\" name=\"status-icon-${i + 1}\"></slot>\n <slot class=\"status-label\" name=\"status-label-${i + 1}\"></slot>\n </div>\n `);\n }\n return html`<div class=\"status\">${result}</div>`;\n }\n\n // The event name stays a literal at each call site so `cem analyze` can read it.\n private renderIconButton(\n name: string,\n activated: boolean,\n label: string,\n icon: TemplateResult,\n onClick: () => void\n ) {\n return html`<obc-icon-button\n class=\"${name}-button\"\n part=\"${name}-button\"\n variant=\"integration\"\n aria-label=${label}\n @click=${onClick}\n ?activated=${activated}\n >\n ${icon}\n </obc-icon-button>`;\n }\n\n override render() {\n return html`\n <div class=\"wrapper\">\n <div class=\"left-side\">\n ${\n this.showHomeButton\n ? this.renderIconButton(\n 'home',\n this.homeButtonActivated,\n msg('Home'),\n html`<obi-home></obi-home>`,\n () =>\n this.dispatchEvent(new CustomEvent('home-button-clicked'))\n )\n : nothing\n }\n ${\n this.showLinkButton\n ? this.renderIconButton(\n 'link',\n this.linkButtonActivated,\n msg('Link'),\n html`<obi-link></obi-link>`,\n () =>\n this.dispatchEvent(new CustomEvent('link-button-clicked'))\n )\n : nothing\n }\n <slot name=\"vessel-selector\"></slot>\n ${this.renderStatusFields()}\n </div>\n <div class=\"right-side\">\n ${\n this.hasRightTrayLeading\n ? html`<slot name=\"right-tray-leading\"></slot>`\n : nothing\n }\n ${\n this.showAlertButton\n ? this.renderIconButton(\n 'alert',\n this.alertButtonActivated,\n msg('Alerts'),\n html`<obi-alerts></obi-alerts>`,\n () =>\n this.dispatchEvent(new CustomEvent('alert-button-clicked'))\n )\n : nothing\n }\n ${\n this.showNotificationButton\n ? // TODO(designer): keep the Enhanced badge button here, or match the\n // sibling bar's plain notification icon button? (#624)\n html`<obc-notification-button\n @click=${() =>\n this.dispatchEvent(\n new CustomEvent('notification-button-clicked')\n )}\n .buttonStyle=${NotificationButtonStyle.Enhanced}\n .showCount=${this.showNotificationCount}\n .count=${this.notificationCount}\n ?isActive=${this.notificationButtonActivated}\n ></obc-notification-button>`\n : nothing\n }\n ${\n this.showScreenButton\n ? this.renderIconButton(\n 'screen',\n this.screenButtonActivated,\n msg('Screen'),\n html`<obi-screen-desk></obi-screen-desk>`,\n () =>\n this.dispatchEvent(new CustomEvent('screen-button-clicked'))\n )\n : nothing\n }\n ${\n this.showSystemButton\n ? this.renderIconButton(\n 'system',\n this.systemButtonActivated,\n msg('System'),\n html`<obi-configure></obi-configure>`,\n () =>\n this.dispatchEvent(new CustomEvent('system-button-clicked'))\n )\n : nothing\n }\n ${\n this.showDimmingButton\n ? this.renderIconButton(\n 'dimming',\n this.dimmingButtonActivated,\n msg('Dimming'),\n html`<obi-palette-day-night-iec></obi-palette-day-night-iec>`,\n () =>\n this.dispatchEvent(\n new CustomEvent('dimming-button-clicked')\n )\n )\n : nothing\n }\n ${\n this.showUserButton\n ? this.renderIconButton(\n 'user',\n this.userButtonActivated,\n msg('User'),\n html`<obi-user></obi-user>`,\n () =>\n this.dispatchEvent(new CustomEvent('user-button-clicked'))\n )\n : nothing\n }\n ${this.showClock ? html`<slot name=\"clock\"></slot>` : nothing}\n </div>\n </div>\n `;\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-integration-bar-dropdown': ObcIntegrationBarDropdown;\n }\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oicl/openbridge-webcomponents",
3
- "version": "2.0.0-next.166",
3
+ "version": "2.0.0-next.167",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",