@operato/input 1.0.0-beta.2 → 1.0.0-beta.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/.storybook/main.js +2 -2
  2. package/.storybook/server.mjs +4 -4
  3. package/CHANGELOG.md +398 -0
  4. package/demo/index-multiple-colors.html +4 -1
  5. package/demo/index-partition-keys.html +2 -5
  6. package/demo/index-select.html +1 -1
  7. package/demo/index.html +4 -0
  8. package/dist/src/locales/en.d.ts +8 -0
  9. package/dist/src/locales/en.js +8 -0
  10. package/dist/src/locales/en.js.map +1 -1
  11. package/dist/src/locales/ko.d.ts +8 -0
  12. package/dist/src/locales/ko.js +8 -0
  13. package/dist/src/locales/ko.js.map +1 -1
  14. package/dist/src/locales/ms.d.ts +8 -0
  15. package/dist/src/locales/ms.js +8 -0
  16. package/dist/src/locales/ms.js.map +1 -1
  17. package/dist/src/locales/zh.d.ts +8 -0
  18. package/dist/src/locales/zh.js +8 -0
  19. package/dist/src/locales/zh.js.map +1 -1
  20. package/dist/src/ox-input-3dish.js +24 -8
  21. package/dist/src/ox-input-3dish.js.map +1 -1
  22. package/dist/src/ox-input-color.js +16 -11
  23. package/dist/src/ox-input-color.js.map +1 -1
  24. package/dist/src/ox-input-crontab.js +13 -10
  25. package/dist/src/ox-input-crontab.js.map +1 -1
  26. package/dist/src/ox-input-file.js +5 -3
  27. package/dist/src/ox-input-file.js.map +1 -1
  28. package/dist/src/ox-input-multiple-colors.d.ts +1 -0
  29. package/dist/src/ox-input-multiple-colors.js +29 -21
  30. package/dist/src/ox-input-multiple-colors.js.map +1 -1
  31. package/dist/src/ox-input-options.d.ts +1 -0
  32. package/dist/src/ox-input-options.js +54 -14
  33. package/dist/src/ox-input-options.js.map +1 -1
  34. package/dist/src/ox-input-partition-keys.d.ts +1 -0
  35. package/dist/src/ox-input-partition-keys.js +51 -23
  36. package/dist/src/ox-input-partition-keys.js.map +1 -1
  37. package/dist/src/ox-input-range.js +35 -38
  38. package/dist/src/ox-input-range.js.map +1 -1
  39. package/dist/src/ox-input-search.d.ts +0 -1
  40. package/dist/src/ox-input-search.js +14 -7
  41. package/dist/src/ox-input-search.js.map +1 -1
  42. package/dist/src/ox-input-unit.d.ts +17 -0
  43. package/dist/src/ox-input-unit.js +122 -0
  44. package/dist/src/ox-input-unit.js.map +1 -0
  45. package/dist/src/ox-input-work-shift.js +77 -43
  46. package/dist/src/ox-input-work-shift.js.map +1 -1
  47. package/dist/src/ox-select.js +12 -1
  48. package/dist/src/ox-select.js.map +1 -1
  49. package/dist/stories/ox-checkbox.stories.d.ts +39 -0
  50. package/dist/stories/ox-checkbox.stories.js +44 -0
  51. package/dist/stories/ox-checkbox.stories.js.map +1 -0
  52. package/dist/stories/ox-input-3dish.stories.d.ts +26 -0
  53. package/dist/stories/ox-input-3dish.stories.js +59 -0
  54. package/dist/stories/ox-input-3dish.stories.js.map +1 -0
  55. package/dist/stories/{index.stories.d.ts → ox-input-barcode.stories.d.ts} +11 -11
  56. package/dist/stories/ox-input-barcode.stories.js +22 -0
  57. package/dist/stories/ox-input-barcode.stories.js.map +1 -0
  58. package/dist/stories/ox-input-conntab.stories.d.ts +26 -0
  59. package/dist/stories/ox-input-conntab.stories.js +37 -0
  60. package/dist/stories/ox-input-conntab.stories.js.map +1 -0
  61. package/dist/stories/ox-input-crontab.stories.d.ts +26 -0
  62. package/dist/stories/ox-input-crontab.stories.js +37 -0
  63. package/dist/stories/ox-input-crontab.stories.js.map +1 -0
  64. package/dist/stories/ox-input-file.stories.d.ts +49 -0
  65. package/dist/stories/ox-input-file.stories.js +48 -0
  66. package/dist/stories/ox-input-file.stories.js.map +1 -0
  67. package/dist/stories/ox-input-multiple-colors.stories.d.ts +20 -0
  68. package/dist/stories/ox-input-multiple-colors.stories.js +167 -0
  69. package/dist/stories/ox-input-multiple-colors.stories.js.map +1 -0
  70. package/dist/stories/ox-input-options.stories.d.ts +25 -0
  71. package/dist/stories/ox-input-options.stories.js +33 -0
  72. package/dist/stories/ox-input-options.stories.js.map +1 -0
  73. package/dist/stories/ox-input-partition-keys.stories.d.ts +27 -0
  74. package/dist/stories/ox-input-partition-keys.stories.js +55 -0
  75. package/dist/stories/ox-input-partition-keys.stories.js.map +1 -0
  76. package/dist/stories/ox-input-range.stories.d.ts +37 -0
  77. package/dist/stories/ox-input-range.stories.js +28 -0
  78. package/dist/stories/ox-input-range.stories.js.map +1 -0
  79. package/dist/stories/ox-input-search.stories.d.ts +29 -0
  80. package/dist/stories/ox-input-search.stories.js +32 -0
  81. package/dist/stories/ox-input-search.stories.js.map +1 -0
  82. package/dist/stories/ox-input-unit.stories.d.ts +40 -0
  83. package/dist/stories/ox-input-unit.stories.js +42 -0
  84. package/dist/stories/ox-input-unit.stories.js.map +1 -0
  85. package/dist/stories/ox-input-work-shift.stories.d.ts +26 -0
  86. package/dist/stories/ox-input-work-shift.stories.js +59 -0
  87. package/dist/stories/ox-input-work-shift.stories.js.map +1 -0
  88. package/dist/stories/ox-select.stories.d.ts +30 -0
  89. package/dist/stories/ox-select.stories.js +83 -0
  90. package/dist/stories/ox-select.stories.js.map +1 -0
  91. package/dist/themes/common-grist-styles.d.ts +1 -0
  92. package/dist/themes/common-grist-styles.js +110 -0
  93. package/dist/themes/common-grist-styles.js.map +1 -0
  94. package/dist/tsconfig.tsbuildinfo +1 -1
  95. package/package.json +11 -11
  96. package/src/locales/en.ts +8 -0
  97. package/src/locales/ko.ts +8 -0
  98. package/src/locales/ms.ts +8 -0
  99. package/src/locales/zh.ts +8 -0
  100. package/src/ox-input-3dish.ts +24 -8
  101. package/src/ox-input-color.ts +17 -11
  102. package/src/ox-input-crontab.ts +13 -10
  103. package/src/ox-input-file.ts +7 -6
  104. package/src/ox-input-multiple-colors.ts +29 -21
  105. package/src/ox-input-options.ts +53 -13
  106. package/src/ox-input-partition-keys.ts +51 -22
  107. package/src/ox-input-range.ts +35 -38
  108. package/src/ox-input-search.ts +14 -8
  109. package/src/ox-input-unit.ts +123 -0
  110. package/src/ox-input-work-shift.ts +78 -43
  111. package/src/ox-select.ts +15 -3
  112. package/stories/ox-checkbox.stories.ts +69 -0
  113. package/stories/ox-input-3dish.stories.ts +73 -0
  114. package/stories/ox-input-barcode.stories.ts +38 -0
  115. package/stories/ox-input-code.stories.ts_ +71 -0
  116. package/stories/ox-input-crontab.stories.ts +51 -0
  117. package/stories/ox-input-file.stories.ts +77 -0
  118. package/stories/ox-input-multiple-colors.stories.ts +178 -0
  119. package/stories/ox-input-options.stories.ts +47 -0
  120. package/stories/ox-input-partition-keys.stories.ts +71 -0
  121. package/stories/ox-input-range.stories.ts +45 -0
  122. package/stories/ox-input-search.stories.ts +47 -0
  123. package/stories/ox-input-unit.stories.ts +66 -0
  124. package/stories/ox-input-work-shift.stories.ts +73 -0
  125. package/stories/ox-select.stories.ts +101 -0
  126. package/themes/app-theme.css +142 -0
  127. package/themes/common-grist-styles.ts +110 -0
  128. package/themes/input-theme.css +19 -0
  129. package/xliff/en.xlf +24 -0
  130. package/xliff/ko.xlf +32 -0
  131. package/xliff/ms.xlf +24 -0
  132. package/xliff/zh.xlf +24 -0
  133. package/dist/stories/index.stories.js +0 -33
  134. package/dist/stories/index.stories.js.map +0 -1
  135. package/stories/index.stories.ts +0 -52
@@ -0,0 +1,123 @@
1
+ /**
2
+ * @license Copyright © HatioLab Inc. All rights reserved.
3
+ */
4
+
5
+ import { css, html } from 'lit'
6
+ import { customElement, property, query } from 'lit/decorators.js'
7
+
8
+ import { OxPopupList } from '@operato/popup'
9
+
10
+ import { OxFormField } from './ox-form-field'
11
+
12
+ const UNIT_SYSTEMS: { [unit: string]: { [unit: string]: number } } = {
13
+ kg: {
14
+ mg: 1000000,
15
+ g: 1000,
16
+ ton: 0.001
17
+ },
18
+ rad: {
19
+ degree: 180 / Math.PI
20
+ }
21
+ }
22
+
23
+ @customElement('ox-input-unit')
24
+ export class OxInputUnit extends OxFormField {
25
+ static styles = [
26
+ css`
27
+ input {
28
+ border: 0;
29
+ border-bottom: var(--border-dark-color);
30
+ padding: var(--input-padding);
31
+ font: var(--input-font);
32
+ color: var(--primary-text-color);
33
+ }
34
+ input:focus {
35
+ outline: none;
36
+ border-bottom: 1px solid var(--primary-color);
37
+ }
38
+
39
+ input::-webkit-outer-spin-button,
40
+ input::-webkit-inner-spin-button {
41
+ -webkit-appearance: none;
42
+ margin: 0;
43
+ }
44
+
45
+ input[type='number'] {
46
+ -moz-appearance: textfield;
47
+ }
48
+
49
+ div {
50
+ display: inline;
51
+ position: relative;
52
+ margin-left: var(--margin-narrow);
53
+ font: var(--label-font);
54
+ color: var(--label-color);
55
+ opacity: 0.7;
56
+ }
57
+ `
58
+ ]
59
+
60
+ @property({ type: String }) placeholder?: string
61
+ @property({ type: String, attribute: 'std-unit' }) stdUnit!: string
62
+ @property({ type: String, attribute: 'user-unit' }) userUnit?: string
63
+
64
+ @query('input') input!: HTMLInputElement
65
+ @query('ox-popup-list') popup!: OxPopupList
66
+
67
+ render() {
68
+ const userUnit = this.userUnit || this.stdUnit
69
+ const units = Object.keys(UNIT_SYSTEMS[this.stdUnit])
70
+ const rate = !this.userUnit || this.userUnit === this.stdUnit ? 1 : UNIT_SYSTEMS[this.stdUnit][this.userUnit] || 1
71
+
72
+ return html`
73
+ <input
74
+ type="number"
75
+ .value=${this._toUserUnit(this.value)}
76
+ placeholder=${this.placeholder}
77
+ @change=${(e: Event) => this._onChangeValue(e)}
78
+ />
79
+ <div
80
+ @click=${(e: Event) => {
81
+ const target = e.currentTarget as HTMLElement
82
+ this.popup.open({
83
+ right: 0,
84
+ top: target.offsetTop + target.offsetHeight
85
+ })
86
+ }}
87
+ >
88
+ ${userUnit}
89
+ <ox-popup-list
90
+ .value=${userUnit}
91
+ @select=${(e: CustomEvent) => {
92
+ this.userUnit = e.detail
93
+ }}
94
+ >
95
+ <div option value=${this.stdUnit}>${this.stdUnit}</div>
96
+ ${units.map(unit => html`<div option value=${unit}>${unit}</div>`)}
97
+ </ox-popup-list>
98
+ </div>
99
+ `
100
+ }
101
+
102
+ _onChangeValue(e: Event) {
103
+ this.value = this._toStdUnit(this.input.value)
104
+
105
+ this.dispatchEvent(
106
+ new CustomEvent('change', {
107
+ bubbles: true,
108
+ composed: true,
109
+ detail: this.value
110
+ })
111
+ )
112
+ }
113
+
114
+ _toUserUnit(stdValue: string | number | undefined) {
115
+ const rate = !this.userUnit || this.userUnit === this.stdUnit ? 1 : UNIT_SYSTEMS[this.stdUnit][this.userUnit] || 1
116
+ return Number(stdValue) * rate
117
+ }
118
+
119
+ _toStdUnit(userValue: string | number | undefined) {
120
+ const rate = !this.userUnit || this.userUnit === this.stdUnit ? 1 : UNIT_SYSTEMS[this.stdUnit][this.userUnit] || 1
121
+ return isNaN(Number(userValue)) ? undefined : Number(userValue) / rate
122
+ }
123
+ }
@@ -7,6 +7,8 @@ import './ox-input-color'
7
7
  import { css, html } from 'lit'
8
8
  import { customElement, property } from 'lit/decorators.js'
9
9
 
10
+ import { localized, msg } from '@lit/localize'
11
+
10
12
  import { OxFormField } from './ox-form-field.js'
11
13
 
12
14
  type WorkShift = { name: string; fromDate: number; fromTime: string; toDate: number; toTime: string }
@@ -21,40 +23,26 @@ Example:
21
23
  </ox-input-work-shift>
22
24
  */
23
25
 
26
+ @localized()
24
27
  @customElement('ox-input-work-shift')
25
28
  export class OxInputWorkShift extends OxFormField {
26
29
  static styles = css`
27
30
  :host {
28
31
  display: flex;
29
32
  flex-direction: column;
30
- align-content: center;
31
33
 
32
34
  width: 100%;
33
35
  overflow: hidden;
34
- border: 1px solid #ccc;
35
36
  }
36
37
 
37
38
  div {
38
39
  display: flex;
39
40
  flex-flow: row nowrap;
40
- align-items: center;
41
-
42
- border-bottom: 1px solid #c0c0c0;
43
- }
44
-
45
- div:last-child {
46
- border-bottom: none;
47
- }
48
-
49
- div > * {
50
- min-width: 0px;
51
- margin: 2px;
52
- padding: 0;
41
+ gap: var(--margin-default);
53
42
  }
54
43
 
55
- button,
56
44
  empty-element {
57
- width: 20px;
45
+ width: 34px;
58
46
  text-align: center;
59
47
  }
60
48
 
@@ -63,21 +51,64 @@ export class OxInputWorkShift extends OxFormField {
63
51
  span {
64
52
  flex: 1;
65
53
  }
54
+ [data-header] {
55
+ background-color: rgba(var(--primary-color-rgb), 0.05);
56
+ padding: var(--padding-narrow);
57
+ }
58
+ [data-header] span {
59
+ font: var(--label-font);
60
+ color: var(--label-color);
61
+ text-transform: var(--label-text-transform);
62
+ text-align: center;
63
+ }
64
+ [data-record] {
65
+ margin-bottom: var(--margin-narrow);
66
+ }
67
+ input,
68
+ select {
69
+ border: 0;
70
+ border-bottom: var(--border-dark-color);
71
+ padding: var(--input-padding);
72
+ font: var(--input-font);
73
+ color: var(--primary-text-color);
74
+
75
+ max-height: 35px;
76
+ }
77
+ input:focus,
78
+ select:focus {
79
+ outline: none;
80
+ border-bottom: 1px solid var(--primary-color);
81
+ }
66
82
 
67
83
  input:required:invalid {
68
84
  border: 1px dashed red;
69
85
  }
70
-
71
- [placeholder='value'] {
72
- flex: 2;
86
+ input[type='time'] {
87
+ padding: 2px var(--padding-default);
73
88
  }
74
89
 
75
- div {
76
- border-bottom: 1px solid #c0c0c0;
90
+ button {
91
+ border: var(--button-border);
92
+ border-radius: var(--border-radius);
93
+ background-color: var(--button-background-color);
94
+ padding: var(--padding-narrow) var(--padding-default);
95
+ line-height: 0.8;
96
+ color: var(--button-color);
97
+ cursor: pointer;
98
+ }
99
+ button mwc-icon {
100
+ font-size: var(--fontsize-default);
101
+ }
102
+ button:focus,
103
+ button:hover,
104
+ button:active {
105
+ border: var(--button-activ-border);
106
+ background-color: var(--button-background-focus-color);
107
+ color: var(--theme-white-color);
77
108
  }
78
109
 
79
- div:last-child {
80
- border-bottom: none;
110
+ [placeholder='value'] {
111
+ flex: 2;
81
112
  }
82
113
  `
83
114
 
@@ -92,11 +123,11 @@ export class OxInputWorkShift extends OxFormField {
92
123
  render() {
93
124
  return html`
94
125
  <div data-header>
95
- <span>name</span>
96
- <span>from date</span>
97
- <span>from time</span>
98
- <span>to date</span>
99
- <span>to time</span>
126
+ <span>${msg('name')}</span>
127
+ <span>${msg('from date')}</span>
128
+ <span>${msg('from time')}</span>
129
+ <span>${msg('to date')}</span>
130
+ <span>${msg('to time')}</span>
100
131
  <empty-element></empty-element>
101
132
  </div>
102
133
 
@@ -106,20 +137,22 @@ export class OxInputWorkShift extends OxFormField {
106
137
  <input type="text" data-name .value=${item.name} required />
107
138
 
108
139
  <select data-from-date .value=${item.fromDate || 0}>
109
- <option value="-1">The day before</option>
110
- <option value="0">The day</option>
111
- <option value="1">The day after</option>
140
+ <option value="-1">${msg('The day before')}</option>
141
+ <option value="0">${msg('The day')}</option>
142
+ <option value="1">${msg('The day after')}</option>
112
143
  </select>
113
144
  <input type="time" data-from-time .value=${item.fromTime} step="1800" required />
114
145
 
115
146
  <select data-to-date .value=${item.toDate || 0}>
116
- <option value="-1">The day before</option>
117
- <option value="0">The day</option>
118
- <option value="1">The day after</option>
147
+ <option value="-1">${msg('The day before')}</option>
148
+ <option value="0">${msg('The day')}</option>
149
+ <option value="1">${msg('The day after')}</option>
119
150
  </select>
120
151
  <input type="time" data-to-time .value=${item.toTime} step="1800" required />
121
152
 
122
- <button class="record-action" @click=${(e: Event) => this._delete(e)} tabindex="-1">-</button>
153
+ <button class="record-action" @click=${(e: Event) => this._delete(e)} tabindex="-1">
154
+ <mwc-icon>remove</mwc-icon>
155
+ </button>
123
156
  </div>
124
157
  `
125
158
  )}
@@ -128,20 +161,22 @@ export class OxInputWorkShift extends OxFormField {
128
161
  <input type="text" data-name />
129
162
 
130
163
  <select data-from-date>
131
- <option value="-1">The day before</option>
132
- <option value="0" selected>The day</option>
133
- <option value="+1">The day after</option>
164
+ <option value="-1">${msg('The day before')}</option>
165
+ <option value="0" selected>${msg('The day')}</option>
166
+ <option value="+1">${msg('The day after')}</option>
134
167
  </select>
135
168
  <input type="time" data-from-time step="1800" />
136
169
 
137
170
  <select data-to-date>
138
- <option value="-1">The day before</option>
139
- <option value="0" selected>The day</option>
140
- <option value="+1">The day after</option>
171
+ <option value="-1">${msg('The day before')}</option>
172
+ <option value="0" selected>${msg('The day')}</option>
173
+ <option value="+1">${msg('The day after')}</option>
141
174
  </select>
142
175
  <input type="time" data-to-time step="1800" />
143
176
 
144
- <button class="record-action" @click=${(e: Event) => this._add()} tabindex="-1">+</button>
177
+ <button class="record-action" @click=${(e: Event) => this._add()} tabindex="-1">
178
+ <mwc-icon>add</mwc-icon>
179
+ </button>
145
180
  </div>
146
181
  `
147
182
  }
package/src/ox-select.ts CHANGED
@@ -5,14 +5,15 @@
5
5
  import '@material/mwc-icon'
6
6
  import '@operato/popup/ox-popup-list.js'
7
7
 
8
- import { PropertyValues, css, html } from 'lit'
9
- import { customElement, property, query, state } from 'lit/decorators.js'
8
+ import { css, html, PropertyValues } from 'lit'
9
+ import { customElement, property, state } from 'lit/decorators.js'
10
10
 
11
- import { OxFormField } from './ox-form-field.js'
12
11
  import { OxPopupList } from '@operato/popup'
13
12
  import { TooltipStyles } from '@operato/styles'
14
13
  import { detectOverflow } from '@operato/utils'
15
14
 
15
+ import { OxFormField } from './ox-form-field.js'
16
+
16
17
  function onmouseover(e: Event) {
17
18
  const element = e.target as HTMLSpanElement
18
19
  if (detectOverflow(element)) {
@@ -41,6 +42,11 @@ export class Select extends OxFormField {
41
42
  align-items: center;
42
43
  justify-content: center;
43
44
  cursor: pointer;
45
+
46
+ border-bottom: var(--border-dark-color);
47
+ padding: var(--input-padding);
48
+ font: var(--input-font);
49
+ color: var(--primary-text-color);
44
50
  }
45
51
 
46
52
  span {
@@ -49,6 +55,9 @@ export class Select extends OxFormField {
49
55
  text-overflow: ellipsis;
50
56
  white-space: nowrap;
51
57
  }
58
+ div:hover {
59
+ border-bottom: 1px solid var(--primary-color);
60
+ }
52
61
 
53
62
  mwc-icon {
54
63
  display: block;
@@ -58,6 +67,9 @@ export class Select extends OxFormField {
58
67
  color: var(--theme-primary-text-color, #3c3938);
59
68
  opacity: 0.7;
60
69
  }
70
+ div:hover mwc-icon {
71
+ color: var(--primary-color);
72
+ }
61
73
 
62
74
  ::slotted(ox-popup-list) {
63
75
  width: 100%;
@@ -0,0 +1,69 @@
1
+ import '../src/ox-checkbox.js'
2
+
3
+ import { TemplateResult, html } from 'lit'
4
+
5
+ export default {
6
+ title: 'ox-checkbox',
7
+ component: 'ox-checkbox',
8
+ argTypes: {
9
+ label: { control: 'text' },
10
+ name: { control: 'text' },
11
+ value: { control: 'boolean' },
12
+ indeterminatable: { control: 'boolean' },
13
+ indeterminate: { control: 'boolean' }
14
+ }
15
+ }
16
+
17
+ interface Story<T> {
18
+ (args: T): TemplateResult
19
+ args?: Partial<T>
20
+ argTypes?: Record<string, unknown>
21
+ }
22
+
23
+ interface ArgTypes {
24
+ label?: string
25
+ name?: string
26
+ value?: boolean
27
+ indeterminatable?: boolean
28
+ indeterminate?: boolean
29
+ }
30
+
31
+ const Template: Story<ArgTypes> = ({
32
+ label = 'Checkbox',
33
+ name = 'hello',
34
+ value = true,
35
+ indeterminatable = false,
36
+ indeterminate = false
37
+ }: ArgTypes) => html`
38
+ <ox-checkbox
39
+ @click=${(e: MouseEvent) => console.log('clicked')}
40
+ name=${name}
41
+ .checked=${value}
42
+ ?indeterminatable=${indeterminatable}
43
+ ?indeterminate=${indeterminate}
44
+ >
45
+ ${label}
46
+ </ox-checkbox>
47
+ `
48
+
49
+ export const Regular = Template.bind({})
50
+ Regular.args = {
51
+ label: 'label',
52
+ name: 'label',
53
+ value: false
54
+ }
55
+
56
+ export const CustomActivated = Template.bind({})
57
+ CustomActivated.args = {
58
+ label: 'Activated',
59
+ name: 'activated',
60
+ indeterminate: false,
61
+ value: true
62
+ }
63
+
64
+ export const CustomIndeterminated = Template.bind({})
65
+ CustomIndeterminated.args = {
66
+ label: 'Indeterminated',
67
+ indeterminate: true,
68
+ value: true
69
+ }
@@ -0,0 +1,73 @@
1
+ import '../src/ox-input-3dish.js'
2
+ import '../src/locale/locale-picker.js'
3
+
4
+ import { html, TemplateResult } from 'lit'
5
+
6
+ export default {
7
+ title: 'ox-input-3dish',
8
+ component: 'ox-input-3dish',
9
+ argTypes: {
10
+ value: { control: 'object' },
11
+ name: { control: 'text' }
12
+ }
13
+ }
14
+
15
+ interface Story<T> {
16
+ (args: T): TemplateResult
17
+ args?: Partial<T>
18
+ argTypes?: Record<string, unknown>
19
+ }
20
+
21
+ interface ArgTypes {
22
+ name?: string
23
+ value?: object
24
+ }
25
+
26
+ const Template: Story<ArgTypes> = ({ name = '3dish', value = [] }: ArgTypes) => html`
27
+ <link href="/themes/app-theme.css" rel="stylesheet" />
28
+ <link href="https://fonts.googleapis.com/css?family=Material+Icons&display=block" rel="stylesheet" />
29
+ <style>
30
+ body {
31
+ }
32
+ </style>
33
+
34
+ <locale-picker></locale-picker>
35
+ <br /><br />
36
+
37
+ <ox-input-3dish
38
+ @change=${(e: Event) => {
39
+ console.log((e.target as HTMLInputElement).value)
40
+ }}
41
+ name=${name}
42
+ .value=${value}
43
+ >
44
+ </ox-input-3dish>
45
+ `
46
+
47
+ export const Regular = Template.bind({})
48
+ Regular.args = {
49
+ name: '3dish',
50
+ value: [
51
+ {
52
+ name: 'DAY',
53
+ fromDate: -1,
54
+ fromTime: '22:00',
55
+ toDate: 0,
56
+ toTime: '06:00'
57
+ },
58
+ {
59
+ name: 'SWING',
60
+ fromDate: 0,
61
+ fromTime: '06:00',
62
+ toDate: 0,
63
+ toTime: '14:00'
64
+ },
65
+ {
66
+ name: 'NIGHT',
67
+ fromDate: 0,
68
+ fromTime: '14:00',
69
+ toDate: 0,
70
+ toTime: '22:00'
71
+ }
72
+ ]
73
+ }
@@ -0,0 +1,38 @@
1
+ import '../src/ox-input-barcode.js'
2
+
3
+ import { html, TemplateResult } from 'lit'
4
+
5
+ export default {
6
+ title: 'ox-input-barcode',
7
+ component: 'ox-input-barcode',
8
+ argTypes: {
9
+ name: { control: 'text' },
10
+ value: { control: 'text' },
11
+ scannable: { control: 'boolean' },
12
+ withoutEnter: { control: 'boolean' }
13
+ }
14
+ }
15
+
16
+ interface Story<T> {
17
+ (args: T): TemplateResult
18
+ args?: Partial<T>
19
+ argTypes?: Record<string, unknown>
20
+ }
21
+
22
+ interface ArgTypes {
23
+ name?: string
24
+ value?: string
25
+ scannable?: boolean
26
+ withoutEnter?: boolean
27
+ }
28
+
29
+ const Template: Story<ArgTypes> = ({ name = 'barcode', scannable = true, withoutEnter = true }: ArgTypes) => html`
30
+ <ox-input-barcode name=${name} ?without-enter=${withoutEnter} ?scannable=${scannable}> </ox-input-barcode>
31
+ `
32
+
33
+ export const Regular = Template.bind({})
34
+ Regular.args = {
35
+ name: 'barcode',
36
+ scannable: true,
37
+ withoutEnter: true
38
+ }
@@ -0,0 +1,71 @@
1
+ import '../src/ox-input-code.js'
2
+
3
+ import { html, TemplateResult } from 'lit'
4
+
5
+ export default {
6
+ title: 'ox-input-code',
7
+ component: 'ox-input-code',
8
+ argTypes: {
9
+ value: { control: 'object' },
10
+ name: { control: 'text' }
11
+ }
12
+ }
13
+
14
+ interface Story<T> {
15
+ (args: T): TemplateResult
16
+ args?: Partial<T>
17
+ argTypes?: Record<string, unknown>
18
+ }
19
+
20
+ interface ArgTypes {
21
+ name?: string
22
+ value?: object
23
+ }
24
+
25
+ const Template: Story<ArgTypes> = ({ name = 'code', value = {} }: ArgTypes) => html`
26
+ <link href="/themes/app-theme.css" rel="stylesheet" />
27
+ <link href="https://fonts.googleapis.com/css?family=Material+Icons&display=block" rel="stylesheet" />
28
+ <style>
29
+ body {
30
+ }
31
+ </style>
32
+
33
+ <ox-input-code
34
+ @change=${(e: Event) => {
35
+ console.log((e.target as HTMLInputElement).value)
36
+ }}
37
+ name=${name}
38
+ .value=${value}
39
+ >
40
+ </ox-input-code>
41
+ `
42
+
43
+ export const Regular = Template.bind({})
44
+ Regular.args = {
45
+ name: 'code',
46
+ value: {
47
+ A: 'A',
48
+ B: 'B',
49
+ C: 'C'
50
+ }
51
+ }
52
+
53
+ export const BooleanValues = Template.bind({})
54
+ BooleanValues.args = {
55
+ name: 'code',
56
+ value: {
57
+ A: true,
58
+ B: false,
59
+ C: true
60
+ }
61
+ }
62
+
63
+ export const ColorValues = Template.bind({})
64
+ ColorValues.args = {
65
+ name: 'code',
66
+ value: {
67
+ A: 'red',
68
+ B: 'yellow',
69
+ C: 'blue'
70
+ }
71
+ }
@@ -0,0 +1,51 @@
1
+ import '../src/ox-input-crontab.js'
2
+ import '../src/locale/locale-picker.js'
3
+
4
+ import { html, TemplateResult } from 'lit'
5
+
6
+ export default {
7
+ title: 'ox-input-crontab',
8
+ component: 'ox-input-crontab',
9
+ argTypes: {
10
+ value: { control: 'text' },
11
+ name: { control: 'text' }
12
+ }
13
+ }
14
+
15
+ interface Story<T> {
16
+ (args: T): TemplateResult
17
+ args?: Partial<T>
18
+ argTypes?: Record<string, unknown>
19
+ }
20
+
21
+ interface ArgTypes {
22
+ name?: string
23
+ value?: string
24
+ }
25
+
26
+ const Template: Story<ArgTypes> = ({ name = 'crontab', value = '* * * * * *' }: ArgTypes) => html`
27
+ <link href="/themes/app-theme.css" rel="stylesheet" />
28
+ <link href="https://fonts.googleapis.com/css?family=Material+Icons&display=block" rel="stylesheet" />
29
+ <style>
30
+ body {
31
+ }
32
+ </style>
33
+
34
+ <locale-picker></locale-picker>
35
+ <br /><br />
36
+
37
+ <ox-input-crontab
38
+ @change=${(e: Event) => {
39
+ console.log((e.target as HTMLInputElement).value)
40
+ }}
41
+ name=${name}
42
+ .value=${value}
43
+ >
44
+ </ox-input-crontab>
45
+ `
46
+
47
+ export const Regular = Template.bind({})
48
+ Regular.args = {
49
+ name: 'crontab',
50
+ value: '* * * * * *'
51
+ }