@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.
- package/.storybook/main.js +2 -2
- package/.storybook/server.mjs +4 -4
- package/CHANGELOG.md +398 -0
- package/demo/index-multiple-colors.html +4 -1
- package/demo/index-partition-keys.html +2 -5
- package/demo/index-select.html +1 -1
- package/demo/index.html +4 -0
- package/dist/src/locales/en.d.ts +8 -0
- package/dist/src/locales/en.js +8 -0
- package/dist/src/locales/en.js.map +1 -1
- package/dist/src/locales/ko.d.ts +8 -0
- package/dist/src/locales/ko.js +8 -0
- package/dist/src/locales/ko.js.map +1 -1
- package/dist/src/locales/ms.d.ts +8 -0
- package/dist/src/locales/ms.js +8 -0
- package/dist/src/locales/ms.js.map +1 -1
- package/dist/src/locales/zh.d.ts +8 -0
- package/dist/src/locales/zh.js +8 -0
- package/dist/src/locales/zh.js.map +1 -1
- package/dist/src/ox-input-3dish.js +24 -8
- package/dist/src/ox-input-3dish.js.map +1 -1
- package/dist/src/ox-input-color.js +16 -11
- package/dist/src/ox-input-color.js.map +1 -1
- package/dist/src/ox-input-crontab.js +13 -10
- package/dist/src/ox-input-crontab.js.map +1 -1
- package/dist/src/ox-input-file.js +5 -3
- package/dist/src/ox-input-file.js.map +1 -1
- package/dist/src/ox-input-multiple-colors.d.ts +1 -0
- package/dist/src/ox-input-multiple-colors.js +29 -21
- package/dist/src/ox-input-multiple-colors.js.map +1 -1
- package/dist/src/ox-input-options.d.ts +1 -0
- package/dist/src/ox-input-options.js +54 -14
- package/dist/src/ox-input-options.js.map +1 -1
- package/dist/src/ox-input-partition-keys.d.ts +1 -0
- package/dist/src/ox-input-partition-keys.js +51 -23
- package/dist/src/ox-input-partition-keys.js.map +1 -1
- package/dist/src/ox-input-range.js +35 -38
- package/dist/src/ox-input-range.js.map +1 -1
- package/dist/src/ox-input-search.d.ts +0 -1
- package/dist/src/ox-input-search.js +14 -7
- package/dist/src/ox-input-search.js.map +1 -1
- package/dist/src/ox-input-unit.d.ts +17 -0
- package/dist/src/ox-input-unit.js +122 -0
- package/dist/src/ox-input-unit.js.map +1 -0
- package/dist/src/ox-input-work-shift.js +77 -43
- package/dist/src/ox-input-work-shift.js.map +1 -1
- package/dist/src/ox-select.js +12 -1
- package/dist/src/ox-select.js.map +1 -1
- package/dist/stories/ox-checkbox.stories.d.ts +39 -0
- package/dist/stories/ox-checkbox.stories.js +44 -0
- package/dist/stories/ox-checkbox.stories.js.map +1 -0
- package/dist/stories/ox-input-3dish.stories.d.ts +26 -0
- package/dist/stories/ox-input-3dish.stories.js +59 -0
- package/dist/stories/ox-input-3dish.stories.js.map +1 -0
- package/dist/stories/{index.stories.d.ts → ox-input-barcode.stories.d.ts} +11 -11
- package/dist/stories/ox-input-barcode.stories.js +22 -0
- package/dist/stories/ox-input-barcode.stories.js.map +1 -0
- package/dist/stories/ox-input-conntab.stories.d.ts +26 -0
- package/dist/stories/ox-input-conntab.stories.js +37 -0
- package/dist/stories/ox-input-conntab.stories.js.map +1 -0
- package/dist/stories/ox-input-crontab.stories.d.ts +26 -0
- package/dist/stories/ox-input-crontab.stories.js +37 -0
- package/dist/stories/ox-input-crontab.stories.js.map +1 -0
- package/dist/stories/ox-input-file.stories.d.ts +49 -0
- package/dist/stories/ox-input-file.stories.js +48 -0
- package/dist/stories/ox-input-file.stories.js.map +1 -0
- package/dist/stories/ox-input-multiple-colors.stories.d.ts +20 -0
- package/dist/stories/ox-input-multiple-colors.stories.js +167 -0
- package/dist/stories/ox-input-multiple-colors.stories.js.map +1 -0
- package/dist/stories/ox-input-options.stories.d.ts +25 -0
- package/dist/stories/ox-input-options.stories.js +33 -0
- package/dist/stories/ox-input-options.stories.js.map +1 -0
- package/dist/stories/ox-input-partition-keys.stories.d.ts +27 -0
- package/dist/stories/ox-input-partition-keys.stories.js +55 -0
- package/dist/stories/ox-input-partition-keys.stories.js.map +1 -0
- package/dist/stories/ox-input-range.stories.d.ts +37 -0
- package/dist/stories/ox-input-range.stories.js +28 -0
- package/dist/stories/ox-input-range.stories.js.map +1 -0
- package/dist/stories/ox-input-search.stories.d.ts +29 -0
- package/dist/stories/ox-input-search.stories.js +32 -0
- package/dist/stories/ox-input-search.stories.js.map +1 -0
- package/dist/stories/ox-input-unit.stories.d.ts +40 -0
- package/dist/stories/ox-input-unit.stories.js +42 -0
- package/dist/stories/ox-input-unit.stories.js.map +1 -0
- package/dist/stories/ox-input-work-shift.stories.d.ts +26 -0
- package/dist/stories/ox-input-work-shift.stories.js +59 -0
- package/dist/stories/ox-input-work-shift.stories.js.map +1 -0
- package/dist/stories/ox-select.stories.d.ts +30 -0
- package/dist/stories/ox-select.stories.js +83 -0
- package/dist/stories/ox-select.stories.js.map +1 -0
- package/dist/themes/common-grist-styles.d.ts +1 -0
- package/dist/themes/common-grist-styles.js +110 -0
- package/dist/themes/common-grist-styles.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -11
- package/src/locales/en.ts +8 -0
- package/src/locales/ko.ts +8 -0
- package/src/locales/ms.ts +8 -0
- package/src/locales/zh.ts +8 -0
- package/src/ox-input-3dish.ts +24 -8
- package/src/ox-input-color.ts +17 -11
- package/src/ox-input-crontab.ts +13 -10
- package/src/ox-input-file.ts +7 -6
- package/src/ox-input-multiple-colors.ts +29 -21
- package/src/ox-input-options.ts +53 -13
- package/src/ox-input-partition-keys.ts +51 -22
- package/src/ox-input-range.ts +35 -38
- package/src/ox-input-search.ts +14 -8
- package/src/ox-input-unit.ts +123 -0
- package/src/ox-input-work-shift.ts +78 -43
- package/src/ox-select.ts +15 -3
- package/stories/ox-checkbox.stories.ts +69 -0
- package/stories/ox-input-3dish.stories.ts +73 -0
- package/stories/ox-input-barcode.stories.ts +38 -0
- package/stories/ox-input-code.stories.ts_ +71 -0
- package/stories/ox-input-crontab.stories.ts +51 -0
- package/stories/ox-input-file.stories.ts +77 -0
- package/stories/ox-input-multiple-colors.stories.ts +178 -0
- package/stories/ox-input-options.stories.ts +47 -0
- package/stories/ox-input-partition-keys.stories.ts +71 -0
- package/stories/ox-input-range.stories.ts +45 -0
- package/stories/ox-input-search.stories.ts +47 -0
- package/stories/ox-input-unit.stories.ts +66 -0
- package/stories/ox-input-work-shift.stories.ts +73 -0
- package/stories/ox-select.stories.ts +101 -0
- package/themes/app-theme.css +142 -0
- package/themes/common-grist-styles.ts +110 -0
- package/themes/input-theme.css +19 -0
- package/xliff/en.xlf +24 -0
- package/xliff/ko.xlf +32 -0
- package/xliff/ms.xlf +24 -0
- package/xliff/zh.xlf +24 -0
- package/dist/stories/index.stories.js +0 -33
- package/dist/stories/index.stories.js.map +0 -1
- 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
|
-
|
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:
|
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
|
-
|
72
|
-
flex: 2;
|
86
|
+
input[type='time'] {
|
87
|
+
padding: 2px var(--padding-default);
|
73
88
|
}
|
74
89
|
|
75
|
-
|
76
|
-
border
|
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
|
-
|
80
|
-
|
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
|
96
|
-
<span
|
97
|
-
<span
|
98
|
-
<span
|
99
|
-
<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"
|
110
|
-
<option value="0"
|
111
|
-
<option value="1"
|
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"
|
117
|
-
<option value="0"
|
118
|
-
<option value="1"
|
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"
|
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"
|
132
|
-
<option value="0" selected
|
133
|
-
<option value="+1"
|
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"
|
139
|
-
<option value="0" selected
|
140
|
-
<option value="+1"
|
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"
|
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 {
|
9
|
-
import { customElement, property,
|
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
|
+
}
|