@oicl/openbridge-webcomponents 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. package/.release-it.json +1 -1
  2. package/.storybook/preview.ts +0 -1
  3. package/CHANGELOG.md +13 -1
  4. package/__snapshots__/application-topbar--inactive.png +0 -0
  5. package/__snapshots__/button-button--raised-disabled.png +0 -0
  6. package/__snapshots__/input-slider--no-icons.png +0 -0
  7. package/__snapshots__/input-slider--no-value.png +0 -0
  8. package/__snapshots__/line-corner-line--primary.png +0 -0
  9. package/__snapshots__/line-example--air.png +0 -0
  10. package/__snapshots__/line-example--connector.png +0 -0
  11. package/__snapshots__/line-example--electric.png +0 -0
  12. package/__snapshots__/line-example--fluid.png +0 -0
  13. package/__snapshots__/line-horizontal-line--primary.png +0 -0
  14. package/__snapshots__/line-vertical-line--complex.png +0 -0
  15. package/__snapshots__/line-vertical-line--primary.png +0 -0
  16. package/custom-elements.json +764 -399
  17. package/dist/automation/corner-line/corner-line.d.ts +22 -0
  18. package/dist/automation/corner-line/corner-line.d.ts.map +1 -0
  19. package/dist/automation/corner-line/corner-line.js +161 -0
  20. package/dist/automation/corner-line/corner-line.js.map +1 -0
  21. package/dist/automation/horizontal-line/horizontal-line.d.ts +15 -0
  22. package/dist/automation/horizontal-line/horizontal-line.d.ts.map +1 -0
  23. package/dist/automation/horizontal-line/horizontal-line.js +110 -0
  24. package/dist/automation/horizontal-line/horizontal-line.js.map +1 -0
  25. package/dist/automation/index.d.ts +20 -0
  26. package/dist/automation/index.d.ts.map +1 -0
  27. package/dist/automation/index.js +42 -0
  28. package/dist/automation/index.js.map +1 -0
  29. package/dist/automation/vertical-line/vertical-line.d.ts +15 -0
  30. package/dist/automation/vertical-line/vertical-line.d.ts.map +1 -0
  31. package/dist/automation/vertical-line/vertical-line.js +111 -0
  32. package/dist/automation/vertical-line/vertical-line.js.map +1 -0
  33. package/dist/components/brilliance-menu/brilliance-menu.d.ts.map +1 -1
  34. package/dist/components/brilliance-menu/brilliance-menu.js +2 -0
  35. package/dist/components/brilliance-menu/brilliance-menu.js.map +1 -1
  36. package/dist/components/slider/slider.css.js +20 -0
  37. package/dist/components/slider/slider.css.js.map +1 -1
  38. package/dist/components/slider/slider.d.ts +8 -0
  39. package/dist/components/slider/slider.d.ts.map +1 -1
  40. package/dist/components/slider/slider.js +44 -18
  41. package/dist/components/slider/slider.js.map +1 -1
  42. package/dist/components/top-bar/top-bar.css.js +5 -1
  43. package/dist/components/top-bar/top-bar.css.js.map +1 -1
  44. package/dist/components/top-bar/top-bar.d.ts.map +1 -1
  45. package/dist/components/top-bar/top-bar.js +8 -8
  46. package/dist/components/top-bar/top-bar.js.map +1 -1
  47. package/package.json +18 -25
  48. package/src/automation/corner-line/corner-line.stories.ts +31 -0
  49. package/src/automation/corner-line/corner-line.ts +167 -0
  50. package/src/automation/horizontal-line/horizontal-line.stories.ts +28 -0
  51. package/src/automation/horizontal-line/horizontal-line.ts +100 -0
  52. package/src/automation/index.ts +41 -0
  53. package/src/automation/line.stories.ts +142 -0
  54. package/src/automation/vertical-line/vertical-line.stories.ts +71 -0
  55. package/src/automation/vertical-line/vertical-line.ts +104 -0
  56. package/src/components/brilliance-menu/brilliance-menu.ts +2 -0
  57. package/src/components/slider/slider.css +20 -0
  58. package/src/components/slider/slider.stories.ts +20 -1
  59. package/src/components/slider/slider.ts +43 -19
  60. package/src/components/top-bar/top-bar.css +4 -0
  61. package/src/components/top-bar/top-bar.ts +10 -8
  62. package/src/palettes/variables.css +64 -43
  63. package/script/svg-instruments/convert-svg.ts +0 -246
  64. package/script/svg-instruments/environment.d.ts +0 -7
  65. package/script/svg-instruments/exports.ts +0 -82
  66. package/script/svg-instruments/figma-types.ts +0 -804
  67. package/script/svg-instruments/figmaImport.ts +0 -79
  68. package/script/svg-instruments/main.ts +0 -109
@@ -0,0 +1,100 @@
1
+ import {LitElement, html, css} from 'lit';
2
+ import {customElement, property} from 'lit/decorators.js';
3
+ import {
4
+ LineMedium,
5
+ LineMediumType,
6
+ lineColor,
7
+ LineType,
8
+ LineTypeType,
9
+ lineWidth,
10
+ } from '../index';
11
+
12
+ @customElement('obc-horizontal-line')
13
+ export class ObcHorizontalLine extends LitElement {
14
+ @property({type: String}) medium: LineMediumType = LineMedium.normal;
15
+ @property({type: String, attribute: 'line-type'}) lineType: LineTypeType =
16
+ LineType.fluid;
17
+ @property({type: Number}) length: number = 1;
18
+
19
+ override render() {
20
+ if (this.lineType === LineType.connector) {
21
+ const length = this.length * 24;
22
+ return html`<svg
23
+ width="${length}"
24
+ height="24"
25
+ viewBox="0 0 ${length} 24"
26
+ fill="none"
27
+ xmlns="http://www.w3.org/2000/svg"
28
+ >
29
+ <line
30
+ x1="0"
31
+ y1="12"
32
+ x2="${length}"
33
+ y2="12"
34
+ stroke-width="1"
35
+ stroke="var(--element-neutral-color)"
36
+ stroke-dasharray="4,2"
37
+ stroke-dashoffset="2"
38
+ />
39
+ </svg> `;
40
+ }
41
+
42
+ const color = lineColor(this.medium);
43
+ const length = this.length * 24 + 1;
44
+ const width = lineWidth(this.lineType);
45
+
46
+ return html`
47
+ <div class="wrapper" style="height: 24px; width: ${this.length * 24}px;">
48
+ <svg
49
+ class="line"
50
+ xmlns="http://www.w3.org/2000/svg"
51
+ viewBox="-.5 0 ${length} 24"
52
+ height="24"
53
+ width=${length}
54
+ >
55
+ <line
56
+ x1="-0.5"
57
+ y1="12"
58
+ x2="${length - 0.5}"
59
+ y2="12"
60
+ stroke-width=${width}
61
+ stroke="var(${color.inner})"
62
+ />
63
+ <line
64
+ x1="-0.5"
65
+ y1="${12 - 0.5 - width / 2}"
66
+ x2="${length - 0.5}"
67
+ y2="${12 - 0.5 - width / 2}"
68
+ stroke-width="1"
69
+ stroke="var(${color.outer})"
70
+ />
71
+ <line
72
+ x1="-0.5"
73
+ y1="${12 + 0.5 + width / 2}"
74
+ x2="${length - 0.5}"
75
+ y2="${12 + 0.5 + width / 2}"
76
+ stroke-width="1"
77
+ stroke="var(${color.outer})"
78
+ />
79
+ </svg>
80
+ </div>
81
+ `;
82
+ }
83
+
84
+ static override styles = css`
85
+ :host {
86
+ display: block;
87
+ line-height: 0;
88
+ }
89
+ .line {
90
+ position: relative;
91
+ left: -0.5px;
92
+ }
93
+ `;
94
+ }
95
+
96
+ declare global {
97
+ interface HTMLElementTagNameMap {
98
+ 'obc-horizontal-line': ObcHorizontalLine;
99
+ }
100
+ }
@@ -0,0 +1,41 @@
1
+ export enum LineMedium {
2
+ normal = 'normal',
3
+ empty = 'empty',
4
+ water = 'water',
5
+ air = 'air',
6
+ }
7
+ export type LineMediumType = keyof typeof LineMedium;
8
+
9
+ export enum LineType {
10
+ fluid = 'fluid',
11
+ electric = 'electric',
12
+ air = 'air',
13
+ connector = 'connector',
14
+ }
15
+ export type LineTypeType = keyof typeof LineType;
16
+
17
+ export function lineColor(medium: LineMediumType): {
18
+ inner: string;
19
+ outer: string;
20
+ } {
21
+ let innerColor = '--automation-pipe-primary-color';
22
+ if (medium === LineMedium.empty) {
23
+ innerColor = '--automation-pipe-primary-inverted-color';
24
+ } else if (medium === LineMedium.water || medium === LineMedium.air) {
25
+ innerColor = '--automation-fresh-water';
26
+ }
27
+ return {inner: innerColor, outer: '--automation-pipe-tertiary-color'};
28
+ }
29
+
30
+ export function lineWidth(lineType: LineTypeType): number {
31
+ if (lineType === LineType.electric) {
32
+ return 2;
33
+ } else if (lineType === LineType.connector) {
34
+ return 1;
35
+ } else if (lineType === LineType.fluid) {
36
+ return 4;
37
+ } else if (lineType === LineType.air) {
38
+ return 10;
39
+ }
40
+ throw new Error('Unknown line type');
41
+ }
@@ -0,0 +1,142 @@
1
+ import type {Meta, StoryObj} from '@storybook/web-components';
2
+ import {ObcVerticalLine} from './vertical-line';
3
+ import './vertical-line/vertical-line';
4
+ import './horizontal-line/horizontal-line';
5
+ import './corner-line/corner-line';
6
+ import {LineMedium, LineType} from './index';
7
+ import {html} from 'lit';
8
+
9
+ const meta: Meta = {
10
+ title: 'Line/Example',
11
+ tags: ['autodocs'],
12
+ argTypes: {
13
+ medium: {
14
+ options: ['normal', 'empty', 'water', 'air'],
15
+ control: {type: 'radio'},
16
+ },
17
+ lineType: {
18
+ options: ['fluid', 'electric', 'air', 'connector'],
19
+ control: {type: 'radio'},
20
+ },
21
+ },
22
+ render: (args) => {
23
+ return html`
24
+ <style>
25
+ .canvas {
26
+ position: relative;
27
+ width: 400px;
28
+ height: 400px;
29
+ }
30
+
31
+ #line1 {
32
+ position: absolute;
33
+ top: calc(24px * 1);
34
+ left: calc(24px * 0);
35
+ }
36
+
37
+ #corner-1-2 {
38
+ position: absolute;
39
+ top: calc(24px * 0);
40
+ left: calc(24px * 0);
41
+ }
42
+
43
+ #line2 {
44
+ position: absolute;
45
+ top: calc(24px * 0);
46
+ left: calc(24px * 1);
47
+ }
48
+ #corner-2-3 {
49
+ position: absolute;
50
+ top: calc(24px * 0);
51
+ left: calc(24px * 6);
52
+ }
53
+
54
+ #line3 {
55
+ position: absolute;
56
+ top: calc(24px * 1);
57
+ left: calc(24px * 6);
58
+ }
59
+ </style>
60
+ <div class="canvas">
61
+ <obc-vertical-line
62
+ medium=${args.medium}
63
+ line-type=${args.lineType}
64
+ length="5"
65
+ id="line1"
66
+ ></obc-vertical-line>
67
+ <obc-corner-line
68
+ medium=${args.medium}
69
+ line-type=${args.lineType}
70
+ direction="bottom-right"
71
+ id="corner-1-2"
72
+ ></obc-corner-line>
73
+ <obc-horizontal-line
74
+ medium=${args.medium}
75
+ line-type=${args.lineType}
76
+ length="5"
77
+ id="line2"
78
+ ></obc-horizontal-line>
79
+ <obc-corner-line
80
+ medium=${args.medium}
81
+ line-type=${args.lineType}
82
+ direction="bottom-left"
83
+ id="corner-2-3"
84
+ ></obc-corner-line>
85
+ <obc-vertical-line
86
+ medium=${args.medium}
87
+ line-type=${args.lineType}
88
+ length="2"
89
+ id="line3"
90
+ ></obc-vertical-line>
91
+ </div>
92
+ `;
93
+ },
94
+ } satisfies Meta<ObcVerticalLine>;
95
+
96
+ export default meta;
97
+ type Story = StoryObj<ObcVerticalLine>;
98
+
99
+ export const Fluid: Story = {
100
+ args: {
101
+ medium: LineMedium.water,
102
+ lineType: LineType.fluid,
103
+ },
104
+ argTypes: {
105
+ medium: {
106
+ options: ['normal', 'empty', 'water'],
107
+ control: {type: 'radio'},
108
+ },
109
+ },
110
+ };
111
+
112
+ export const Electric: Story = {
113
+ args: {
114
+ medium: LineMedium.normal,
115
+ lineType: LineType.electric,
116
+ },
117
+ medium: {
118
+ options: ['normal', 'empty'],
119
+ control: {type: 'radio'},
120
+ },
121
+ };
122
+
123
+ export const Air: Story = {
124
+ args: {
125
+ medium: LineMedium.air,
126
+ lineType: LineType.air,
127
+ },
128
+ argTypes: {
129
+ medium: {
130
+ options: ['normal', 'empty', 'air'],
131
+ control: {type: 'radio'},
132
+ },
133
+ },
134
+ };
135
+
136
+ export const Connector: Story = {
137
+ args: {
138
+ medium: LineMedium.normal,
139
+ lineType: LineType.connector,
140
+ },
141
+ argTypes: {},
142
+ };
@@ -0,0 +1,71 @@
1
+ import type {Meta, StoryObj} from '@storybook/web-components';
2
+ import {ObcVerticalLine} from './vertical-line';
3
+ import './vertical-line';
4
+ import '../horizontal-line/horizontal-line';
5
+ import {html} from 'lit';
6
+
7
+ const meta: Meta<typeof ObcVerticalLine> = {
8
+ title: 'Line/Vertical line',
9
+ tags: ['autodocs'],
10
+ component: 'obc-vertical-line',
11
+ argTypes: {
12
+ medium: {
13
+ options: ['normal', 'empty', 'water'],
14
+ control: {type: 'radio'},
15
+ },
16
+ },
17
+ } satisfies Meta<ObcVerticalLine>;
18
+
19
+ export default meta;
20
+ type Story = StoryObj<ObcVerticalLine>;
21
+
22
+ export const Primary: Story = {
23
+ args: {
24
+ length: 3,
25
+ },
26
+ argTypes: {
27
+ medium: {
28
+ options: ['normal', 'empty', 'water'],
29
+ control: {type: 'radio'},
30
+ },
31
+ lineType: {
32
+ options: ['fluid', 'electric', 'air', 'connector'],
33
+ control: {type: 'radio'},
34
+ },
35
+ },
36
+ };
37
+
38
+ export const Complex: Story = {
39
+ render: () => {
40
+ return html`
41
+ <style>
42
+ .canvas {
43
+ position: relative;
44
+ width: 400px;
45
+ height: 400px;
46
+ }
47
+
48
+ #line1 {
49
+ position: absolute;
50
+ top: 24px;
51
+ }
52
+
53
+ #line2 {
54
+ position: absolute;
55
+ top: calc(24px * 3);
56
+ left: calc(24px * 5);
57
+ }
58
+ #line3 {
59
+ position: absolute;
60
+ top: calc(24px * 3);
61
+ left: calc(24px * 5);
62
+ }
63
+ </style>
64
+ <div class="canvas">
65
+ <obc-vertical-line length="5" id="line1"></obc-vertical-line>
66
+ <obc-vertical-line length="2" id="line2"></obc-vertical-line>
67
+ <obc-horizontal-line length="5" id="line3"></obc-horizontal-line>
68
+ </div>
69
+ `;
70
+ },
71
+ };
@@ -0,0 +1,104 @@
1
+ import {LitElement, html, css} from 'lit';
2
+ import {customElement, property} from 'lit/decorators.js';
3
+ import {
4
+ LineMedium,
5
+ LineMediumType,
6
+ lineColor,
7
+ LineType,
8
+ LineTypeType,
9
+ lineWidth,
10
+ } from '../index';
11
+
12
+ /* Vertical line component
13
+ *
14
+ * The vertical line is 24px * length + 1px. +1 px to make sure that connecting lines are overlapping, to hide the gap between them.
15
+ */
16
+ @customElement('obc-vertical-line')
17
+ export class ObcVerticalLine extends LitElement {
18
+ @property({type: String}) medium: LineMediumType = LineMedium.normal;
19
+ @property({type: String, attribute: 'line-type'}) lineType: LineTypeType =
20
+ LineType.fluid;
21
+ @property({type: Number}) length: number = 1;
22
+
23
+ override render() {
24
+ if (this.lineType === LineType.connector) {
25
+ const length = this.length * 24;
26
+ return html`<svg
27
+ width="24"
28
+ height="${length}"
29
+ viewBox="0 0 24 ${length}"
30
+ fill="none"
31
+ xmlns="http://www.w3.org/2000/svg"
32
+ >
33
+ <line
34
+ y1="0"
35
+ x1="12"
36
+ y2="${length}"
37
+ x2="12"
38
+ stroke-width="1"
39
+ stroke="var(--element-neutral-color)"
40
+ stroke-dasharray="4,2"
41
+ stroke-dashoffset="2"
42
+ />
43
+ </svg> `;
44
+ }
45
+
46
+ const length = this.length * 24 + 1;
47
+ const color = lineColor(this.medium);
48
+ const width = lineWidth(this.lineType);
49
+ return html`
50
+ <div class="wrapper" style="width: 24px; height: ${this.length * 24}px;">
51
+ <svg
52
+ class="line"
53
+ xmlns="http://www.w3.org/2000/svg"
54
+ viewBox="0 -.5 24 ${length}"
55
+ width="24"
56
+ height=${length}
57
+ >
58
+ <line
59
+ y1="-.5"
60
+ x1="12"
61
+ y2="${length - 0.5}"
62
+ x2="12"
63
+ stroke-width=${width}
64
+ stroke="var(${color.inner})"
65
+ />
66
+ <line
67
+ y1="-.5"
68
+ x1=${12 - 0.5 - width / 2}
69
+ y2="${length - 0.5}"
70
+ x2=${12 - 0.5 - width / 2}
71
+ stroke-width="1"
72
+ stroke="var(${color.outer})"
73
+ />
74
+ <line
75
+ y1="-.5"
76
+ x1=${12 + 0.5 + width / 2}
77
+ y2="${length - 0.5}"
78
+ x2=${12 + 0.5 + width / 2}
79
+ stroke-width="1"
80
+ stroke="var(${color.outer})"
81
+ />
82
+ </svg>
83
+ </div>
84
+ `;
85
+ }
86
+
87
+ static override styles = css`
88
+ :host {
89
+ display: block;
90
+ line-height: 0;
91
+ }
92
+
93
+ .line {
94
+ position: relative;
95
+ top: -0.5px;
96
+ }
97
+ `;
98
+ }
99
+
100
+ declare global {
101
+ interface HTMLElementTagNameMap {
102
+ 'obc-vertical-line': ObcVerticalLine;
103
+ }
104
+ }
@@ -62,6 +62,8 @@ export class ObcBrillianceMenu extends LitElement {
62
62
  min="0"
63
63
  max="100"
64
64
  hug-container
65
+ has-left-icon
66
+ has-right-icon
65
67
  >
66
68
  <obi-04-brilliance-low slot="icon-left"></obi-04-brilliance-low>
67
69
  <obi-04-brilliance-high slot="icon-right"></obi-04-brilliance-high>
@@ -22,6 +22,7 @@
22
22
  position: relative;
23
23
  }
24
24
 
25
+
25
26
  .slider {
26
27
  position: absolute;
27
28
  -webkit-appearance: none;
@@ -70,6 +71,25 @@
70
71
  background: var(--selected-enabled-background-color);
71
72
  }
72
73
 
74
+ .no-input .interactive-track {
75
+ width: calc(var(--ratio) * 100% + (1 - 2 * var(--ratio)) * 4px);
76
+ }
77
+
78
+
79
+ /* used in non-interactive mode */
80
+ .passive-thumb {
81
+ position: absolute;
82
+ width: 16px;
83
+ height: 16px;
84
+ top: 16px;
85
+ left: calc(var(--ratio) * 100% - 8px + (1 - 2 * var(--ratio)) * 4px);
86
+ border-radius: 100%;
87
+ border-width: 4px;
88
+ border-style: solid;
89
+ border-color: var(--container-background-color);
90
+ background: var(--selected-enabled-background-color);
91
+ }
92
+
73
93
  .wrapper:hover .interactive-track {
74
94
  background: var(--selected-hover-background-color);
75
95
  }
@@ -17,7 +17,9 @@ const meta: Meta<typeof ObcSlider> = {
17
17
  step: {
18
18
  control: {type: 'number', min: 1, max: 100, step: 1},
19
19
  },
20
-
20
+ hugContainer: {
21
+ control: {type: 'boolean'},
22
+ },
21
23
  iconLeft: {
22
24
  options: iconIds,
23
25
  control: {type: 'select'},
@@ -34,6 +36,9 @@ const meta: Meta<typeof ObcSlider> = {
34
36
  min="0"
35
37
  max="100"
36
38
  ?hug-container=${args.hugContainer}
39
+ ?has-left-icon=${args.iconLeft ? true : false}
40
+ ?has-right-icon=${args.iconRight ? true : false}
41
+ variant=${args.variant}
37
42
  >
38
43
  ${args.iconLeft
39
44
  ? iconIdToIconHtml(args.iconLeft as unknown as string, {
@@ -62,6 +67,13 @@ export const Primary: Story = {
62
67
  },
63
68
  };
64
69
 
70
+ export const NoIcons: Story = {
71
+ args: {
72
+ value: 20,
73
+ hugContainer: false,
74
+ },
75
+ };
76
+
65
77
  export const HugContainer: Story = {
66
78
  args: {
67
79
  value: 20,
@@ -70,3 +82,10 @@ export const HugContainer: Story = {
70
82
  hugContainer: true,
71
83
  },
72
84
  };
85
+
86
+ export const NoValue: Story = {
87
+ args: {
88
+ value: 20,
89
+ variant: 'no-input',
90
+ },
91
+ };
@@ -4,6 +4,14 @@ import {styleMap} from 'lit/directives/style-map.js';
4
4
  import {ifDefined} from 'lit/directives/if-defined.js';
5
5
  import componentStyle from './slider.css?inline';
6
6
  import '../icon-button/icon-button';
7
+ import {classMap} from 'lit/directives/class-map.js';
8
+
9
+ export enum ObcSliderVariant {
10
+ NoValue = 'no-value',
11
+ NoInput = 'no-input',
12
+ }
13
+
14
+ export type ObcSliderVariantType = 'no-value' | 'no-input';
7
15
 
8
16
  /**
9
17
  * @element obc-slider
@@ -27,6 +35,9 @@ export class ObcSlider extends LitElement {
27
35
  @property({type: Number}) max = 100;
28
36
  @property({type: Number}) step: number | undefined;
29
37
  @property({type: Number, attribute: 'step-click'}) stepClick = 10;
38
+ @property({type: String}) variant: ObcSliderVariantType = 'no-value';
39
+ @property({type: Boolean, attribute: 'has-left-icon'}) hasLeftIcon = false;
40
+ @property({type: Boolean, attribute: 'has-right-icon'}) hasRightIcon = false;
30
41
 
31
42
  onInput(value: number) {
32
43
  this.value = value;
@@ -44,31 +55,44 @@ export class ObcSlider extends LitElement {
44
55
  override render() {
45
56
  const ratio = (this.value - this.min) / (this.max - this.min);
46
57
  return html`
47
- <obc-icon-button @click=${this.onReduceClick} variant="flat">
48
- <slot name="icon-left"></slot>
49
- </obc-icon-button>
50
- <div class="wrapper">
58
+ ${this.hasLeftIcon
59
+ ? html` <obc-icon-button @click=${this.onReduceClick} variant="flat">
60
+ <slot name="icon-left"></slot>
61
+ </obc-icon-button>`
62
+ : null}
63
+ <div class=${classMap({wrapper: true, [this.variant]: true})}>
51
64
  <div class="track"></div>
52
65
  <div
53
66
  class="interactive-track"
54
67
  style=${styleMap({'--ratio': ratio})}
55
68
  ></div>
56
- <input
57
- type="range"
58
- min=${this.min}
59
- max=${this.max}
60
- step=${ifDefined(this.step)}
61
- .value=${this.value.toString()}
62
- class="slider"
63
- @input=${(event: Event) => {
64
- this.value = Number((event.target as HTMLInputElement).value);
65
- this.dispatchEvent(new CustomEvent('value', {detail: this.value}));
66
- }}
67
- />
69
+ ${this.variant === ObcSliderVariant.NoInput
70
+ ? html`<div
71
+ class="passive-thumb"
72
+ style=${styleMap({'--ratio': ratio})}
73
+ ></div>`
74
+ : html`
75
+ <input
76
+ type="range"
77
+ min=${this.min}
78
+ max=${this.max}
79
+ step=${ifDefined(this.step)}
80
+ .value=${this.value.toString()}
81
+ class="slider"
82
+ @input=${(event: Event) => {
83
+ this.value = Number((event.target as HTMLInputElement).value);
84
+ this.dispatchEvent(
85
+ new CustomEvent('value', {detail: this.value})
86
+ );
87
+ }}
88
+ />
89
+ `}
68
90
  </div>
69
- <obc-icon-button @click=${this.onIncreaseClick} variant="flat">
70
- <slot name="icon-right"></slot>
71
- </obc-icon-button>
91
+ ${this.hasRightIcon
92
+ ? html`<obc-icon-button @click=${this.onIncreaseClick} variant="flat">
93
+ <slot name="icon-right"></slot>
94
+ </obc-icon-button>`
95
+ : null}
72
96
  `;
73
97
  }
74
98
 
@@ -1,3 +1,7 @@
1
+ * {
2
+ box-sizing: border-box;
3
+ }
4
+
1
5
  .wrapper {
2
6
  height: 48px;
3
7
  width: 100%;
@@ -202,14 +202,16 @@ export class ObcTopBar extends LitElement {
202
202
  <obi-01-apps></obi-01-apps>
203
203
  </obc-icon-button>`
204
204
  : null}
205
- <obc-icon-button
206
- class="left-more-button"
207
- variant="flat"
208
- @click=${this.leftMoreButtonClicked}
209
- ?activated=${this.leftMoreButtonActivated}
210
- >
211
- <obi-01-more-vertical></obi-01-more-vertical>
212
- </obc-icon-button>
205
+ ${!this.inactive
206
+ ? html`<obc-icon-button
207
+ class="left-more-button"
208
+ variant="flat"
209
+ @click=${this.leftMoreButtonClicked}
210
+ ?activated=${this.leftMoreButtonActivated}
211
+ >
212
+ <obi-01-more-vertical></obi-01-more-vertical>
213
+ </obc-icon-button>`
214
+ : null}
213
215
  </div>
214
216
  </nav>
215
217
  `;