@oicl/openbridge-webcomponents-full-bundle 2.0.0-next.96 → 2.0.0-next.97
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.
- package/bundle/openbridge-webcomponents.bundle.js +19 -9
- package/bundle/openbridge-webcomponents.bundle.js.map +1 -1
- package/custom-elements.json +314 -132
- package/dist/ar/poi/poi.d.ts +4 -2
- package/dist/ar/poi/poi.d.ts.map +1 -1
- package/dist/ar/poi/poi.js.map +1 -1
- package/dist/ar/poi-layer/poi-layer.d.ts +1 -0
- package/dist/ar/poi-layer/poi-layer.d.ts.map +1 -1
- package/dist/ar/poi-layer/poi-layer.js.map +1 -1
- package/dist/ar/poi-object/poi-object-aton.d.ts +1 -0
- package/dist/ar/poi-object/poi-object-aton.d.ts.map +1 -1
- package/dist/ar/poi-object/poi-object-aton.js.map +1 -1
- package/dist/automation/automation-badge/automation-badge.d.ts +2 -0
- package/dist/automation/automation-badge/automation-badge.d.ts.map +1 -1
- package/dist/automation/automation-badge/automation-badge.js.map +1 -1
- package/dist/automation/automation-button/automation-button.d.ts +9 -0
- package/dist/automation/automation-button/automation-button.d.ts.map +1 -1
- package/dist/automation/automation-button/automation-button.js.map +1 -1
- package/dist/automation/automation-input-modal/automation-input-modal.d.ts +4 -0
- package/dist/automation/automation-input-modal/automation-input-modal.d.ts.map +1 -1
- package/dist/automation/automation-input-modal/automation-input-modal.js.map +1 -1
- package/dist/building-blocks/alert-list/alert-list.d.ts +4 -0
- package/dist/building-blocks/alert-list/alert-list.d.ts.map +1 -1
- package/dist/building-blocks/alert-list/alert-list.js.map +1 -1
- package/dist/building-blocks/bar-horizontal/bar-horizontal.d.ts +2 -0
- package/dist/building-blocks/bar-horizontal/bar-horizontal.d.ts.map +1 -1
- package/dist/building-blocks/bar-horizontal/bar-horizontal.js.map +1 -1
- package/dist/building-blocks/bar-vertical/bar-vertical.d.ts +2 -0
- package/dist/building-blocks/bar-vertical/bar-vertical.d.ts.map +1 -1
- package/dist/building-blocks/bar-vertical/bar-vertical.js.map +1 -1
- package/dist/components/advice-floating-item/advice-floating-item.d.ts +2 -4
- package/dist/components/advice-floating-item/advice-floating-item.d.ts.map +1 -1
- package/dist/components/advice-floating-item/advice-floating-item.js.map +1 -1
- package/dist/components/advice-message-item/advice-message-item.d.ts +6 -19
- package/dist/components/advice-message-item/advice-message-item.d.ts.map +1 -1
- package/dist/components/advice-message-item/advice-message-item.js.map +1 -1
- package/dist/components/alert-floating-item/alert-floating-item.d.ts +12 -0
- package/dist/components/alert-floating-item/alert-floating-item.d.ts.map +1 -1
- package/dist/components/alert-floating-item/alert-floating-item.js.map +1 -1
- package/dist/components/alert-menu/alert-menu.d.ts +6 -20
- package/dist/components/alert-menu/alert-menu.d.ts.map +1 -1
- package/dist/components/alert-menu/alert-menu.js.map +1 -1
- package/dist/components/alert-menu-item/alert-menu-item.d.ts +4 -0
- package/dist/components/alert-menu-item/alert-menu-item.d.ts.map +1 -1
- package/dist/components/alert-menu-item/alert-menu-item.js.map +1 -1
- package/dist/components/chat-message/chat-message.d.ts +3 -0
- package/dist/components/chat-message/chat-message.d.ts.map +1 -1
- package/dist/components/chat-message/chat-message.js.map +1 -1
- package/dist/components/elevated-card-radio/elevated-card-radio.d.ts +2 -6
- package/dist/components/elevated-card-radio/elevated-card-radio.d.ts.map +1 -1
- package/dist/components/elevated-card-radio/elevated-card-radio.js.map +1 -1
- package/dist/components/keyboard-numeric/keyboard-numeric.d.ts +6 -0
- package/dist/components/keyboard-numeric/keyboard-numeric.d.ts.map +1 -1
- package/dist/components/keyboard-numeric/keyboard-numeric.js.map +1 -1
- package/dist/components/notification-floating-item/notification-floating-item.d.ts +2 -4
- package/dist/components/notification-floating-item/notification-floating-item.d.ts.map +1 -1
- package/dist/components/notification-floating-item/notification-floating-item.js.map +1 -1
- package/dist/components/sequence-card/sequence-card.d.ts +9 -0
- package/dist/components/sequence-card/sequence-card.d.ts.map +1 -1
- package/dist/components/sequence-card/sequence-card.js.map +1 -1
- package/dist/components/sequence-item/sequence-item.d.ts +5 -0
- package/dist/components/sequence-item/sequence-item.d.ts.map +1 -1
- package/dist/components/sequence-item/sequence-item.js.map +1 -1
- package/dist/components/sequence-modal/sequence-modal.d.ts +4 -0
- package/dist/components/sequence-modal/sequence-modal.d.ts.map +1 -1
- package/dist/components/sequence-modal/sequence-modal.js.map +1 -1
- package/dist/components/sequence-step/sequence-step.d.ts.map +1 -1
- package/dist/components/sequence-step/sequence-step.js.map +1 -1
- package/dist/components/slider-double/slider-double.d.ts +4 -8
- package/dist/components/slider-double/slider-double.d.ts.map +1 -1
- package/dist/components/slider-double/slider-double.js.map +1 -1
- package/dist/components/status-indicator/status-indicator.d.ts +1 -0
- package/dist/components/status-indicator/status-indicator.d.ts.map +1 -1
- package/dist/components/status-indicator/status-indicator.js.map +1 -1
- package/dist/components/system-menu/system-menu.d.ts +2 -0
- package/dist/components/system-menu/system-menu.d.ts.map +1 -1
- package/dist/components/system-menu/system-menu.js.map +1 -1
- package/dist/components/table-header-item/table-header-item.d.ts +2 -0
- package/dist/components/table-header-item/table-header-item.d.ts.map +1 -1
- package/dist/components/table-header-item/table-header-item.js.map +1 -1
- package/dist/components/tag/tag.d.ts +1 -0
- package/dist/components/tag/tag.d.ts.map +1 -1
- package/dist/components/tag/tag.js.map +1 -1
- package/dist/components/toggletip/toggletip.d.ts +4 -4
- package/dist/components/toggletip/toggletip.js.map +1 -1
- package/dist/components/user-menu/user-menu.d.ts +1 -0
- package/dist/components/user-menu/user-menu.d.ts.map +1 -1
- package/dist/components/user-menu/user-menu.js.map +1 -1
- package/dist/integration-systems/integration-app-bar/integration-app-bar.d.ts +1 -0
- package/dist/integration-systems/integration-app-bar/integration-app-bar.d.ts.map +1 -1
- package/dist/integration-systems/integration-app-bar/integration-app-bar.js.map +1 -1
- package/dist/integration-systems/integration-bar/integration-bar.d.ts +0 -1
- package/dist/integration-systems/integration-bar/integration-bar.d.ts.map +1 -1
- package/dist/integration-systems/integration-bar/integration-bar.js.map +1 -1
- package/dist/integration-systems/integration-bar-dropdown/integration-bar-dropdown.d.ts +9 -9
- package/dist/integration-systems/integration-bar-dropdown/integration-bar-dropdown.js.map +1 -1
- package/dist/integration-systems/integration-fleet-button/integration-fleet-button.d.ts +1 -0
- package/dist/integration-systems/integration-fleet-button/integration-fleet-button.d.ts.map +1 -1
- package/dist/integration-systems/integration-fleet-button/integration-fleet-button.js.map +1 -1
- package/dist/integration-systems/integration-tabs/integration-tabs.d.ts +1 -0
- package/dist/integration-systems/integration-tabs/integration-tabs.d.ts.map +1 -1
- package/dist/integration-systems/integration-tabs/integration-tabs.js.map +1 -1
- package/dist/navigation-instruments/compass-sector/compass-sector.d.ts +0 -1
- package/dist/navigation-instruments/compass-sector/compass-sector.d.ts.map +1 -1
- package/dist/navigation-instruments/compass-sector/compass-sector.js.map +1 -1
- package/dist/navigation-instruments/watch/tickmark.d.ts.map +1 -1
- package/dist/navigation-instruments/watch/tickmark.js +17 -7
- package/dist/navigation-instruments/watch/tickmark.js.map +1 -1
- package/dist/navigation-instruments/watch/watch.d.ts.map +1 -1
- package/dist/navigation-instruments/watch/watch.js +2 -2
- package/dist/navigation-instruments/watch/watch.js.map +1 -1
- package/dist/navigation-instruments/wind-propulsion/wind-propulsion.d.ts +0 -1
- package/dist/navigation-instruments/wind-propulsion/wind-propulsion.d.ts.map +1 -1
- package/dist/navigation-instruments/wind-propulsion/wind-propulsion.js.map +1 -1
- package/dist/pages/alert-detail-page/alert-detail-page.d.ts.map +1 -1
- package/dist/pages/alert-detail-page/alert-detail-page.js.map +1 -1
- package/package.json +3 -2
- package/script/check-slot-event-docs.ts +353 -0
- package/src/ar/poi/poi.ts +4 -2
- package/src/ar/poi-layer/poi-layer.ts +1 -0
- package/src/ar/poi-object/poi-object-aton.ts +1 -0
- package/src/automation/automation-badge/automation-badge.ts +2 -0
- package/src/automation/automation-button/automation-button.ts +9 -0
- package/src/automation/automation-input-modal/automation-input-modal.ts +4 -0
- package/src/building-blocks/alert-list/alert-list.ts +4 -0
- package/src/building-blocks/bar-horizontal/bar-horizontal.ts +2 -0
- package/src/building-blocks/bar-vertical/bar-vertical.ts +2 -0
- package/src/components/advice-floating-item/advice-floating-item.ts +2 -4
- package/src/components/advice-message-item/advice-message-item.ts +6 -19
- package/src/components/alert-floating-item/alert-floating-item.ts +12 -0
- package/src/components/alert-menu/alert-menu.ts +6 -20
- package/src/components/alert-menu-item/alert-menu-item.ts +4 -0
- package/src/components/chat-message/chat-message.ts +3 -0
- package/src/components/elevated-card-radio/elevated-card-radio.ts +2 -6
- package/src/components/keyboard-numeric/keyboard-numeric.ts +6 -0
- package/src/components/notification-floating-item/notification-floating-item.ts +2 -4
- package/src/components/sequence-card/sequence-card.ts +9 -0
- package/src/components/sequence-item/sequence-item.ts +5 -0
- package/src/components/sequence-modal/sequence-modal.ts +4 -0
- package/src/components/sequence-step/sequence-step.ts +3 -0
- package/src/components/slider-double/slider-double.ts +4 -8
- package/src/components/status-indicator/status-indicator.ts +1 -0
- package/src/components/system-menu/system-menu.ts +2 -0
- package/src/components/table-header-item/table-header-item.ts +2 -0
- package/src/components/tag/tag.ts +1 -0
- package/src/components/toggletip/toggletip.ts +4 -4
- package/src/components/user-menu/user-menu.ts +1 -0
- package/src/integration-systems/integration-app-bar/integration-app-bar.ts +1 -0
- package/src/integration-systems/integration-bar/integration-bar.ts +0 -1
- package/src/integration-systems/integration-bar-dropdown/integration-bar-dropdown.ts +9 -9
- package/src/integration-systems/integration-fleet-button/integration-fleet-button.ts +1 -0
- package/src/integration-systems/integration-tabs/integration-tabs.ts +1 -0
- package/src/navigation-instruments/compass-sector/compass-sector.ts +0 -1
- package/src/navigation-instruments/watch/tickmark.spec.ts +99 -0
- package/src/navigation-instruments/watch/tickmark.ts +21 -8
- package/src/navigation-instruments/watch/watch.ts +7 -2
- package/src/navigation-instruments/wind-propulsion/wind-propulsion.ts +0 -1
- package/src/pages/alert-detail-page/alert-detail-page.ts +7 -0
|
@@ -84,6 +84,12 @@ const ALLOWED_CHARS_PATTERN = `^[${ALLOWED_CHARS.map((c) =>
|
|
|
84
84
|
).join('')}]*$`;
|
|
85
85
|
|
|
86
86
|
/**
|
|
87
|
+
* `<obc-keyboard-numeric>` – An on-screen numeric keyboard with optional calculation and symbol modes.
|
|
88
|
+
*
|
|
89
|
+
* @slot leading-icon - Custom leading icon shown inside the input field (rendered when `hasLeadingIcon` is true).
|
|
90
|
+
* @fires close-click {CustomEvent} Fired when the close button (or Escape) dismisses the keyboard.
|
|
91
|
+
* @fires value-change {CustomEvent<{value: string}>} Fired whenever the current value changes.
|
|
92
|
+
* @fires done-click {CustomEvent<{value: string}>} Fired when the DONE button (or Enter) is pressed.
|
|
87
93
|
* @beta
|
|
88
94
|
*/
|
|
89
95
|
@customElement('obc-keyboard-numeric')
|
|
@@ -53,8 +53,7 @@ import {
|
|
|
53
53
|
*
|
|
54
54
|
* | Slot Name | Renders When... | Purpose |
|
|
55
55
|
* |-----------------|------------------------------|--------------------------------------------------------------|
|
|
56
|
-
* | primary-icon |
|
|
57
|
-
* | secondary-icon | type="application" only | Additional icon for application-type notifications. |
|
|
56
|
+
* | primary-icon | type="application" only | Custom main icon (the built-in notification icon is used otherwise). |
|
|
58
57
|
* | title | Always | Title or heading of the notification. |
|
|
59
58
|
* | description | Always | Detailed message text. |
|
|
60
59
|
* | time | hasTimestamp is true | Timestamp label (e.g., "09:12:46"). |
|
|
@@ -83,8 +82,7 @@ import {
|
|
|
83
82
|
* </obc-notification-floating-item>
|
|
84
83
|
* ```
|
|
85
84
|
*
|
|
86
|
-
* @slot primary-icon -
|
|
87
|
-
* @slot secondary-icon - Additional icon for application-type notifications.
|
|
85
|
+
* @slot primary-icon - Custom main icon, projected into the child only when `type="application"` (the built-in notification icon is used otherwise).
|
|
88
86
|
* @slot title - Title or heading of the notification.
|
|
89
87
|
* @slot description - Detailed message text.
|
|
90
88
|
* @slot time - Timestamp label (e.g., "09:12:46").
|
|
@@ -97,6 +97,15 @@ export enum ObcSequenceCardState {
|
|
|
97
97
|
* ```
|
|
98
98
|
*
|
|
99
99
|
* Keywords: timeline, step, progress, sequence, card, event, status.
|
|
100
|
+
*
|
|
101
|
+
* @slot leading-icon - Icon before the title (shown when `hasLeadingIcon` is true).
|
|
102
|
+
* @slot title - Title text (falls back to `cardTitle`).
|
|
103
|
+
* @slot subtitle - Subtitle/description (falls back to `subtitle`).
|
|
104
|
+
* @slot time-stamp - Header timestamp (falls back to `timeLabel` + `time`).
|
|
105
|
+
* @slot header-actions - Optional header actions (e.g., close button).
|
|
106
|
+
* @slot left-time-stamp - Left rail timestamp (falls back to `leftTime`).
|
|
107
|
+
* @slot actions - Actions row content (shown when `hasActions` is true).
|
|
108
|
+
* @slot - Main content area (shown when `hasContent` is true).
|
|
100
109
|
* @experimental
|
|
101
110
|
*/
|
|
102
111
|
@customElement('obc-sequence-card')
|
|
@@ -32,6 +32,11 @@ export enum SequenceItemState {
|
|
|
32
32
|
* composing `<obc-sequence-step>` for the visual indicator. Consumers can either
|
|
33
33
|
* configure the built-in step via `step*` props or supply a custom step through
|
|
34
34
|
* the `step` slot.
|
|
35
|
+
*
|
|
36
|
+
* @slot title - Title/subtitle block (falls back to the built-in `title`/`subtitle`/inline description).
|
|
37
|
+
* @slot description - Description text (rendered when `hasDescription` is true and not inlined).
|
|
38
|
+
* @slot meta - Meta row with timestamp/distance stamps (rendered when `hasMeta` is true — i.e. `hasStamp` with a timestamp or distance stamp enabled).
|
|
39
|
+
* @slot step - Custom step indicator (falls back to the built-in `<obc-sequence-step>`).
|
|
35
40
|
* @beta
|
|
36
41
|
*/
|
|
37
42
|
@customElement('obc-sequence-item')
|
|
@@ -59,6 +59,10 @@ export enum ObcSequenceModalType {
|
|
|
59
59
|
* ```
|
|
60
60
|
*
|
|
61
61
|
* Keywords: modal, sequence, step, dialog, progress, actions.
|
|
62
|
+
*
|
|
63
|
+
* @slot actions - Actions row content (shown when `hasActions` is true).
|
|
64
|
+
* @slot - Main content area.
|
|
65
|
+
* @fires close-click - Fired when the close icon is clicked.
|
|
62
66
|
* @experimental
|
|
63
67
|
*/
|
|
64
68
|
@customElement('obc-sequence-modal')
|
|
@@ -55,6 +55,9 @@ export enum SequenceVariant {
|
|
|
55
55
|
* `<obc-sequence-step>` renders the visual node of a sequence diagram.
|
|
56
56
|
* Supports three sizes, multiple styles (regular/point/connector), and can show
|
|
57
57
|
* leading/trailing connectors as well as state-specific icons.
|
|
58
|
+
*
|
|
59
|
+
* @slot leading-icon - Custom leading state icon (shown for medium/large regular steps with `hasIcon`, when the value has no built-in icon).
|
|
60
|
+
* @slot - Step label content (shown for non-small steps).
|
|
58
61
|
*/
|
|
59
62
|
export class ObcSequenceStep extends LitElement {
|
|
60
63
|
@property({type: String}) orientation: SequenceOrientation =
|
|
@@ -43,7 +43,7 @@ export type ObcSliderDoubleChangeEvent = CustomEvent<{
|
|
|
43
43
|
*
|
|
44
44
|
* This component allows users to select a minimum and maximum value by dragging two thumbs along a horizontal track. It is commonly used for filtering or specifying ranges (such as price, speed, or time intervals) in forms and dashboards. The slider supports both interactive and read-only display modes, as well as visual variants for different UI needs.
|
|
45
45
|
*
|
|
46
|
-
* Appears with two draggable handles (thumbs) and labels showing the current low and high values.
|
|
46
|
+
* Appears with two draggable handles (thumbs) and labels showing the current low and high values. The low and high readout labels can be customized via slots.
|
|
47
47
|
*
|
|
48
48
|
* ## Features
|
|
49
49
|
* - **Dual-thumb range selection:** Users can adjust both the lower and upper bounds of a numeric interval.
|
|
@@ -56,7 +56,7 @@ export type ObcSliderDoubleChangeEvent = CustomEvent<{
|
|
|
56
56
|
* - **Seeking mode:** Enable `allowSeeking` to let users jump to a value by clicking on the track, with smooth animated transitions controlled by `seekingSpeed`.
|
|
57
57
|
* - **Custom labels:** Display formatted value labels with unit (`labelUnit`), decimal precision (`labelDecimals`), and adjustable label width (`labelWidth`).
|
|
58
58
|
* - **Hug container option:** Remove spacing between slider and container edges with the `hugcontainer` attribute for seamless layout integration.
|
|
59
|
-
* - **
|
|
59
|
+
* - **Custom readouts:** Replace the low/high value labels with custom content using the `left-readout` and `right-readout` slots.
|
|
60
60
|
*
|
|
61
61
|
* ## Usage Guidelines
|
|
62
62
|
* Use `obc-slider-double` when you need users to specify a numeric range, such as filtering results by minimum and maximum values. Ideal for scenarios like:
|
|
@@ -72,8 +72,6 @@ export type ObcSliderDoubleChangeEvent = CustomEvent<{
|
|
|
72
72
|
*
|
|
73
73
|
* | Slot Name | Renders When... | Purpose |
|
|
74
74
|
* |---------------|-------------------------------|------------------------------------------------------------------------------------------------------------------|
|
|
75
|
-
* | icon-left | Always | Icon or content at the left end of the slider. Example: `<obi-placeholder slot="icon-left"></obi-placeholder>` |
|
|
76
|
-
* | icon-right | Always | Icon or content at the right end of the slider. Example: `<obi-placeholder slot="icon-right"></obi-placeholder>` |
|
|
77
75
|
* | left-readout | `showLeftReadout` is true | Custom content for the left (low) readout label. Falls back to the formatted `low` value. |
|
|
78
76
|
* | right-readout | `showRightReadout` is true | Custom content for the right (high) readout label. Falls back to the formatted `high` value. |
|
|
79
77
|
*
|
|
@@ -119,15 +117,13 @@ export type ObcSliderDoubleChangeEvent = CustomEvent<{
|
|
|
119
117
|
* variant="enhanced"
|
|
120
118
|
* allowSeeking
|
|
121
119
|
* >
|
|
122
|
-
* <
|
|
123
|
-
* <
|
|
120
|
+
* <span slot="left-readout">Min</span>
|
|
121
|
+
* <span slot="right-readout">Max</span>
|
|
124
122
|
* </obc-slider-double>
|
|
125
123
|
* ```
|
|
126
124
|
*
|
|
127
125
|
* In this example, the slider allows selection of a percentage range from 0 to 100, with 5% increments, enhanced styling, and seeking enabled.
|
|
128
126
|
*
|
|
129
|
-
* @slot icon-left - Slot for the left icon
|
|
130
|
-
* @slot icon-right - Slot for the right icon
|
|
131
127
|
* @slot left-readout - Custom content for the left (low) readout label (rendered when `showLeftReadout` is true)
|
|
132
128
|
* @slot right-readout - Custom content for the right (high) readout label (rendered when `showRightReadout` is true)
|
|
133
129
|
* @fires value {ObcSliderDoubleValueEvent} - Fires when the value is changed
|
|
@@ -97,6 +97,7 @@ export type VolumeChangeEvent = CustomEvent<number>;
|
|
|
97
97
|
* @fires audio-click - When the Audio button is clicked
|
|
98
98
|
* @fires audio-volume-change - {VolumeChangeEvent} - When the Audio volume is changed
|
|
99
99
|
* @fires microphone-click - When the Microphone button is clicked
|
|
100
|
+
* @fires push-to-talk-change - When the push-to-talk toggle is changed
|
|
100
101
|
* @fires battery-usage-click - When the Battery usage button is clicked
|
|
101
102
|
* @fires battery-saving-mode-change - When the Battery saving mode is changed
|
|
102
103
|
* @fires battery-mode-change - When the Battery mode is changed
|
|
@@ -107,6 +108,7 @@ export type VolumeChangeEvent = CustomEvent<number>;
|
|
|
107
108
|
* @fires to-sub-menu-click - When the sub menu is clicked
|
|
108
109
|
* @fires wifi-options-click - When the Wi-Fi options are clicked
|
|
109
110
|
* @fires wifi-disconnect-click - When the Wi-Fi disconnect is clicked
|
|
111
|
+
* @slot battery-status - Custom battery status text (falls back to the built-in charging/battery label).
|
|
110
112
|
* @stable
|
|
111
113
|
*/
|
|
112
114
|
@customElement('obc-system-menu')
|
|
@@ -20,6 +20,8 @@ export enum ObcTableHeaderItemSortDirection {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
|
+
* @slot leading-icon - Leading icon (shown when `hasLeadingIcon` is true).
|
|
24
|
+
* @slot - Header label content (hidden when `type` is `IconOnly`).
|
|
23
25
|
* @beta
|
|
24
26
|
*/
|
|
25
27
|
@customElement('obc-table-header-item')
|
|
@@ -84,10 +84,10 @@ export enum ToggletipVariant {
|
|
|
84
84
|
* ## Properties and Configuration
|
|
85
85
|
*
|
|
86
86
|
* - `variant`: Controls the visual style and semantic meaning (see Features above for all options).
|
|
87
|
-
* - `title`: Sets the header text
|
|
88
|
-
* - `description`: Sets the main message text
|
|
89
|
-
* - `
|
|
90
|
-
* - `hasLeadingIcon`, `hasTrailingIcon`: Toggle visibility of icon slots.
|
|
87
|
+
* - `title`: Sets the header text. The header is shown only when `title` is a non-empty string.
|
|
88
|
+
* - `description`: Sets the main message text. Shown whenever `description` is defined.
|
|
89
|
+
* - `hasContent`, `hasActions`: Toggle visibility of the custom content area and the action buttons.
|
|
90
|
+
* - `hasLeadingIcon`, `hasTrailingIcon`: Toggle visibility of icon slots (only effective when a `title` is set).
|
|
91
91
|
* - `primaryButtonLabel`, `secondaryButtonLabel`: Set labels for action buttons (shown if `hasActions` is true).
|
|
92
92
|
* - `customWidth`: Sets a custom width for the toggletip (in pixels).
|
|
93
93
|
*
|
|
@@ -104,6 +104,7 @@ export type ObcUserMenuSignedInAction = {
|
|
|
104
104
|
* ></obc-user-menu>
|
|
105
105
|
* ```
|
|
106
106
|
*
|
|
107
|
+
* @slot signed-in-action-icon-<id> - Optional icon for a signed-in action, one per action; `<id>` is the normalized action id (shown in the `signed-in` type).
|
|
107
108
|
* @fires sign-in-click {CustomEvent<{username: string, password: string}>}
|
|
108
109
|
* @fires sign-out-click
|
|
109
110
|
* @fires signed-in-action-click {CustomEvent<{id: string, label: string}>}
|
|
@@ -3,6 +3,7 @@ import {customElement} from '../../decorator.js';
|
|
|
3
3
|
import compentStyle from './integration-app-bar.css?inline';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
+
* @slot apps - Application buttons; slotted elements are normalized to a uniform width
|
|
6
7
|
* @experimental
|
|
7
8
|
*/
|
|
8
9
|
@customElement('obc-integration-app-bar')
|
|
@@ -30,7 +30,6 @@ import {classMap} from 'lit/directives/class-map.js';
|
|
|
30
30
|
* @slot clock - Custom clock content, rendered when `showClock` is true
|
|
31
31
|
* @slot integration-buttons - Regular vessel integration buttons
|
|
32
32
|
* @slot hug-buttons - Compact vessel integration buttons; slotted integration buttons are forced to hug type
|
|
33
|
-
* @slot vessel-integration-menu - Modal that will appear achored below the fleet/vessel button. Typically an obc-integration-vessel-menu
|
|
34
33
|
* @property {IntegrationBarType} type - Integration bar mode for fleet/vessel presentation
|
|
35
34
|
* @property {boolean} hideHomeButton - Hides the home button when true
|
|
36
35
|
* @property {boolean} showClock - Toggles rendering of the clock slot
|
|
@@ -16,18 +16,18 @@ import {property} from 'lit/decorators.js';
|
|
|
16
16
|
*
|
|
17
17
|
* @fires home-button-clicked - Fired when the home button is clicked
|
|
18
18
|
* @fires dimming-button-clicked - Fired when the dimming button is clicked
|
|
19
|
-
* @fires notification-button-clicked -
|
|
19
|
+
* @fires notification-button-clicked - Fired when the notification button is clicked
|
|
20
20
|
* @fires user-button-clicked - Fired when the user button is clicked
|
|
21
21
|
* @fires system-button-clicked - Fired when the system button is clicked
|
|
22
22
|
*
|
|
23
|
-
* @slot vessel-selector
|
|
24
|
-
* @slot status-label-1
|
|
25
|
-
* @slot status-icon-1
|
|
26
|
-
* @slot status-label-2
|
|
27
|
-
* @slot status-icon-2
|
|
28
|
-
* @slot status-label-3
|
|
29
|
-
* @slot status-icon-3
|
|
30
|
-
* @slot clock
|
|
23
|
+
* @slot vessel-selector - Vessel selector content
|
|
24
|
+
* @slot status-label-1 - Label for the first status field
|
|
25
|
+
* @slot status-icon-1 - Icon for the first status field
|
|
26
|
+
* @slot status-label-2 - Label for the second status field
|
|
27
|
+
* @slot status-icon-2 - Icon for the second status field
|
|
28
|
+
* @slot status-label-3 - Label for the third status field
|
|
29
|
+
* @slot status-icon-3 - Icon for the third status field
|
|
30
|
+
* @slot clock - Custom clock content, rendered when `showClock` is true
|
|
31
31
|
* @experimental
|
|
32
32
|
*/
|
|
33
33
|
@customElement('obc-integration-bar-dropdown')
|
|
@@ -96,7 +96,6 @@ function normalizeAngle(a: number): number {
|
|
|
96
96
|
* - Enable `zoomToFitArc` to enlarge the arc to fill the viewport.
|
|
97
97
|
* - For a full‑circle compass, use `<obc-compass>` instead.
|
|
98
98
|
*
|
|
99
|
-
* @fires None
|
|
100
99
|
* @stable
|
|
101
100
|
*/
|
|
102
101
|
@customElement('obc-compass-sector')
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import {describe, it, expect} from 'vitest';
|
|
2
|
+
import type {SVGTemplateResult} from 'lit';
|
|
3
|
+
import {tickmark, TickmarkType, TickmarkStyle} from './tickmark.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Collect every numeric interpolated value from a `tickmark()` result without
|
|
7
|
+
* rendering it. `tickmark()` returns Lit `SVGTemplateResult`s (or an array of
|
|
8
|
+
* them); the interpolated `x`/`y`/coordinate values live on `.values`. This
|
|
9
|
+
* lets us assert the geometry is finite in a plain Node environment — no DOM.
|
|
10
|
+
*/
|
|
11
|
+
function numericValues(
|
|
12
|
+
result: SVGTemplateResult | SVGTemplateResult[]
|
|
13
|
+
): number[] {
|
|
14
|
+
const templates = Array.isArray(result) ? result : [result];
|
|
15
|
+
const numbers: number[] = [];
|
|
16
|
+
for (const template of templates) {
|
|
17
|
+
for (const value of template.values) {
|
|
18
|
+
if (typeof value === 'number') {
|
|
19
|
+
numbers.push(value);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return numbers;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
describe('tickmark label positioning', () => {
|
|
27
|
+
// On first paint the element is not laid out yet, so obc-watch computes a
|
|
28
|
+
// scale of 0. A `textOnly` tick still renders a <text>, and dividing by a
|
|
29
|
+
// zero scale used to yield x/y of ±Infinity — which the browser rejects with
|
|
30
|
+
// `<text> attribute x: Expected length, "-Infinity"` (issue #1032).
|
|
31
|
+
it('keeps the zero-value textOnly label finite when the scale is 0', () => {
|
|
32
|
+
const result = tickmark(-90, {
|
|
33
|
+
size: TickmarkType.textOnly,
|
|
34
|
+
style: TickmarkStyle.regular,
|
|
35
|
+
scale: 0,
|
|
36
|
+
text: '0',
|
|
37
|
+
inside: false,
|
|
38
|
+
textRadius: 184,
|
|
39
|
+
maxDigits: 1,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
for (const value of numericValues(result)) {
|
|
43
|
+
expect(Number.isFinite(value)).toBe(true);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it('keeps labelled ticks finite for a zero scale (inside and outside)', () => {
|
|
48
|
+
for (const inside of [false, true]) {
|
|
49
|
+
const result = tickmark(45, {
|
|
50
|
+
size: TickmarkType.primary,
|
|
51
|
+
style: TickmarkStyle.regular,
|
|
52
|
+
scale: 0,
|
|
53
|
+
text: '50',
|
|
54
|
+
inside,
|
|
55
|
+
textRadius: 184,
|
|
56
|
+
maxDigits: 2,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
for (const value of numericValues(result)) {
|
|
60
|
+
expect(Number.isFinite(value)).toBe(true);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it('keeps rotated labels finite for a zero scale', () => {
|
|
66
|
+
const result = tickmark(120, {
|
|
67
|
+
size: TickmarkType.primary,
|
|
68
|
+
style: TickmarkStyle.regular,
|
|
69
|
+
scale: 0,
|
|
70
|
+
text: '12',
|
|
71
|
+
inside: false,
|
|
72
|
+
textRadius: 184,
|
|
73
|
+
rotation: 120,
|
|
74
|
+
maxDigits: 2,
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
for (const value of numericValues(result)) {
|
|
78
|
+
expect(Number.isFinite(value)).toBe(true);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it('does not distort geometry for a valid scale', () => {
|
|
83
|
+
// A settled scale must be untouched: the outside zero tick at -90° sits on
|
|
84
|
+
// the negative-x axis, so its x is finite and negative and y is ~0.
|
|
85
|
+
const result = tickmark(-90, {
|
|
86
|
+
size: TickmarkType.textOnly,
|
|
87
|
+
style: TickmarkStyle.regular,
|
|
88
|
+
scale: 1,
|
|
89
|
+
text: '0',
|
|
90
|
+
inside: false,
|
|
91
|
+
textRadius: 184,
|
|
92
|
+
maxDigits: 1,
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
const numbers = numericValues(result);
|
|
96
|
+
expect(numbers.every(Number.isFinite)).toBe(true);
|
|
97
|
+
expect(numbers.some((n) => n < -100)).toBe(true);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
@@ -64,14 +64,15 @@ export function tickmark(
|
|
|
64
64
|
endLabelsMaxMin?: boolean;
|
|
65
65
|
}
|
|
66
66
|
): SVGTemplateResult | SVGTemplateResult[] {
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
// Before layout settles the caller can pass a scale of 0 (or a non-finite
|
|
68
|
+
// value). Label offsets are computed as `px / scale`, so a 0 scale would emit
|
|
69
|
+
// ±Infinity coordinates that the browser rejects. Fall back to a 1:1 scale
|
|
70
|
+
// until a real one is available (issue #1032).
|
|
71
|
+
const safeScale = Number.isFinite(scale) && scale > 0 ? scale : 1;
|
|
71
72
|
const rOff = radiusOffset;
|
|
72
73
|
let innerRadius: number;
|
|
73
74
|
let outerRadius: number;
|
|
74
|
-
textRadius = textRadius + (3 /
|
|
75
|
+
textRadius = textRadius + (3 / safeScale + 3) * (inside ? -1 : 1);
|
|
75
76
|
const rad = (angle * Math.PI) / 180;
|
|
76
77
|
if (size === TickmarkType.primary) {
|
|
77
78
|
innerRadius = 328 / 2 + rOff;
|
|
@@ -90,7 +91,13 @@ export function tickmark(
|
|
|
90
91
|
outerRadius = 336 / 2 + rOff;
|
|
91
92
|
} else {
|
|
92
93
|
return [
|
|
93
|
-
textSvg(text ?? '', {
|
|
94
|
+
textSvg(text ?? '', {
|
|
95
|
+
angle,
|
|
96
|
+
inside,
|
|
97
|
+
scale: safeScale,
|
|
98
|
+
textRadius,
|
|
99
|
+
endLabelsMaxMin,
|
|
100
|
+
}),
|
|
94
101
|
];
|
|
95
102
|
}
|
|
96
103
|
|
|
@@ -121,11 +128,17 @@ export function tickmark(
|
|
|
121
128
|
if (rotation === undefined) {
|
|
122
129
|
return [
|
|
123
130
|
tick,
|
|
124
|
-
textSvg(text, {
|
|
131
|
+
textSvg(text, {
|
|
132
|
+
angle,
|
|
133
|
+
inside,
|
|
134
|
+
scale: safeScale,
|
|
135
|
+
textRadius,
|
|
136
|
+
endLabelsMaxMin,
|
|
137
|
+
}),
|
|
125
138
|
];
|
|
126
139
|
} else {
|
|
127
140
|
const newRadius =
|
|
128
|
-
textRadius + ((4 /
|
|
141
|
+
textRadius + ((4 / safeScale + 5) * (inside ? -1 : 1) * maxDigits) / 2;
|
|
129
142
|
const textX = Math.sin(rad) * newRadius;
|
|
130
143
|
const textY = -Math.cos(rad) * newRadius;
|
|
131
144
|
return [
|
|
@@ -690,8 +690,13 @@ export class ObcWatch extends LitElement {
|
|
|
690
690
|
}
|
|
691
691
|
}
|
|
692
692
|
const scale = Math.min(clientWidth / width, clientHeight / height);
|
|
693
|
-
|
|
694
|
-
|
|
693
|
+
// On first paint the element and its parent can both still be zero-sized, so
|
|
694
|
+
// the scale is 0 (or non-finite). That value flows into `px / scale` label
|
|
695
|
+
// math and yields ±Infinity coordinates the browser rejects. Fall back to a
|
|
696
|
+
// 1:1 scale until a real size is available; the ResizeController re-renders
|
|
697
|
+
// with the true scale once the element is laid out (issue #1032).
|
|
698
|
+
if (!Number.isFinite(scale) || scale <= 0) {
|
|
699
|
+
return 1;
|
|
695
700
|
}
|
|
696
701
|
return scale;
|
|
697
702
|
}
|
|
@@ -30,6 +30,13 @@ export enum AlertDetailPageType {
|
|
|
30
30
|
|
|
31
31
|
@localized()
|
|
32
32
|
/**
|
|
33
|
+
* @slot note-label - Label for the note section, rendered when `hasNote` is true
|
|
34
|
+
* @slot note - Note content, rendered when `hasNote` is true
|
|
35
|
+
* @slot readout-graph-title - Title for the readout graph, rendered when `hasReadoutGraph` is true
|
|
36
|
+
* @slot readout-graph - Readout graph content, rendered when `hasReadoutGraph` is true
|
|
37
|
+
* @slot action - Action controls, rendered when `hasActions` is true
|
|
38
|
+
* @slot <detail>-label - Overrides the label of the `<detail>` field (e.g. `tagId-label`, `category-label`, `time-label`)
|
|
39
|
+
* @slot <detail>-value - Overrides the value of the `<detail>` field (e.g. `tagId-value`, `category-value`, `time-value`)
|
|
33
40
|
* @beta
|
|
34
41
|
*/
|
|
35
42
|
@customElement('obc-alert-detail-page')
|