@operato/input 2.0.0-alpha.145 → 2.0.0-alpha.148

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 (230) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/demo/index-barcode.html +4 -4
  3. package/demo/index-checkbox.html +4 -4
  4. package/demo/index-code.html +4 -4
  5. package/demo/index-options.html +2 -2
  6. package/dist/src/ox-buttons-radio.d.ts +9 -5
  7. package/dist/src/ox-buttons-radio.js +43 -11
  8. package/dist/src/ox-buttons-radio.js.map +1 -1
  9. package/dist/src/ox-checkbox.js +23 -19
  10. package/dist/src/ox-checkbox.js.map +1 -1
  11. package/dist/src/ox-input-3axis.js +13 -2
  12. package/dist/src/ox-input-3axis.js.map +1 -1
  13. package/dist/src/ox-input-3dish.js +16 -11
  14. package/dist/src/ox-input-3dish.js.map +1 -1
  15. package/dist/src/ox-input-angle.js +9 -2
  16. package/dist/src/ox-input-angle.js.map +1 -1
  17. package/dist/src/ox-input-barcode.js +12 -8
  18. package/dist/src/ox-input-barcode.js.map +1 -1
  19. package/dist/src/ox-input-code.js +3 -0
  20. package/dist/src/ox-input-code.js.map +1 -1
  21. package/dist/src/ox-input-color.js +8 -6
  22. package/dist/src/ox-input-color.js.map +1 -1
  23. package/dist/src/ox-input-crontab.js +29 -25
  24. package/dist/src/ox-input-crontab.js.map +1 -1
  25. package/dist/src/ox-input-data.js +15 -6
  26. package/dist/src/ox-input-data.js.map +1 -1
  27. package/dist/src/ox-input-duration.js +15 -34
  28. package/dist/src/ox-input-duration.js.map +1 -1
  29. package/dist/src/ox-input-file.js +19 -14
  30. package/dist/src/ox-input-file.js.map +1 -1
  31. package/dist/src/ox-input-hashtags.js +13 -14
  32. package/dist/src/ox-input-hashtags.js.map +1 -1
  33. package/dist/src/ox-input-i18n-label.js +4 -4
  34. package/dist/src/ox-input-i18n-label.js.map +1 -1
  35. package/dist/src/ox-input-image.js +1 -1
  36. package/dist/src/ox-input-image.js.map +1 -1
  37. package/dist/src/ox-input-key-values.js +6 -6
  38. package/dist/src/ox-input-key-values.js.map +1 -1
  39. package/dist/src/ox-input-mass-fraction.js +5 -5
  40. package/dist/src/ox-input-mass-fraction.js.map +1 -1
  41. package/dist/src/ox-input-multiple-colors.js +2 -2
  42. package/dist/src/ox-input-multiple-colors.js.map +1 -1
  43. package/dist/src/ox-input-options.js +6 -6
  44. package/dist/src/ox-input-options.js.map +1 -1
  45. package/dist/src/ox-input-partition-keys.js +6 -6
  46. package/dist/src/ox-input-partition-keys.js.map +1 -1
  47. package/dist/src/ox-input-privilege.js +13 -16
  48. package/dist/src/ox-input-privilege.js.map +1 -1
  49. package/dist/src/ox-input-quantifier.js +5 -5
  50. package/dist/src/ox-input-quantifier.js.map +1 -1
  51. package/dist/src/ox-input-range.js +8 -8
  52. package/dist/src/ox-input-range.js.map +1 -1
  53. package/dist/src/ox-input-search.js +3 -5
  54. package/dist/src/ox-input-search.js.map +1 -1
  55. package/dist/src/ox-input-select-buttons.js +1 -1
  56. package/dist/src/ox-input-select-buttons.js.map +1 -1
  57. package/dist/src/ox-input-table.js +1 -1
  58. package/dist/src/ox-input-table.js.map +1 -1
  59. package/dist/src/ox-input-unit-number.js +5 -5
  60. package/dist/src/ox-input-unit-number.js.map +1 -1
  61. package/dist/src/ox-input-value-map.js +6 -6
  62. package/dist/src/ox-input-value-map.js.map +1 -1
  63. package/dist/src/ox-input-value-ranges.js +7 -7
  64. package/dist/src/ox-input-value-ranges.js.map +1 -1
  65. package/dist/src/ox-input-work-shift.js +7 -7
  66. package/dist/src/ox-input-work-shift.js.map +1 -1
  67. package/dist/src/ox-select.d.ts +9 -1
  68. package/dist/src/ox-select.js +49 -15
  69. package/dist/src/ox-select.js.map +1 -1
  70. package/dist/stories/ox-buttons-radio.stories.d.ts +31 -0
  71. package/dist/stories/ox-buttons-radio.stories.js +81 -0
  72. package/dist/stories/ox-buttons-radio.stories.js.map +1 -0
  73. package/dist/stories/ox-checkbox.stories.d.ts +6 -0
  74. package/dist/stories/ox-checkbox.stories.js +57 -13
  75. package/dist/stories/ox-checkbox.stories.js.map +1 -1
  76. package/dist/stories/ox-input-3axis.stories.d.ts +5 -0
  77. package/dist/stories/ox-input-3axis.stories.js +32 -10
  78. package/dist/stories/ox-input-3axis.stories.js.map +1 -1
  79. package/dist/stories/ox-input-3dish.stories.d.ts +5 -0
  80. package/dist/stories/ox-input-3dish.stories.js +35 -13
  81. package/dist/stories/ox-input-3dish.stories.js.map +1 -1
  82. package/dist/stories/ox-input-angle.stories.d.ts +5 -0
  83. package/dist/stories/ox-input-angle.stories.js +36 -13
  84. package/dist/stories/ox-input-angle.stories.js.map +1 -1
  85. package/dist/stories/ox-input-barcode.stories.d.ts +5 -0
  86. package/dist/stories/ox-input-barcode.stories.js +35 -18
  87. package/dist/stories/ox-input-barcode.stories.js.map +1 -1
  88. package/dist/stories/ox-input-code.stories.d.ts +5 -0
  89. package/dist/stories/ox-input-code.stories.js +38 -13
  90. package/dist/stories/ox-input-code.stories.js.map +1 -1
  91. package/dist/stories/ox-input-crontab.stories.d.ts +5 -0
  92. package/dist/stories/ox-input-crontab.stories.js +35 -12
  93. package/dist/stories/ox-input-crontab.stories.js.map +1 -1
  94. package/dist/stories/ox-input-data.stories.d.ts +5 -0
  95. package/dist/stories/ox-input-data.stories.js +34 -11
  96. package/dist/stories/ox-input-data.stories.js.map +1 -1
  97. package/dist/stories/ox-input-duration.stories.d.ts +5 -0
  98. package/dist/stories/ox-input-duration.stories.js +36 -13
  99. package/dist/stories/ox-input-duration.stories.js.map +1 -1
  100. package/dist/stories/ox-input-file.stories.d.ts +5 -0
  101. package/dist/stories/ox-input-file.stories.js +39 -16
  102. package/dist/stories/ox-input-file.stories.js.map +1 -1
  103. package/dist/stories/ox-input-hashtags.stories.d.ts +5 -0
  104. package/dist/stories/ox-input-hashtags.stories.js +35 -12
  105. package/dist/stories/ox-input-hashtags.stories.js.map +1 -1
  106. package/dist/stories/ox-input-i18n-label.stories.d.ts +5 -0
  107. package/dist/stories/ox-input-i18n-label.stories.js +35 -12
  108. package/dist/stories/ox-input-i18n-label.stories.js.map +1 -1
  109. package/dist/stories/ox-input-key-values.stories.d.ts +5 -0
  110. package/dist/stories/ox-input-key-values.stories.js +35 -12
  111. package/dist/stories/ox-input-key-values.stories.js.map +1 -1
  112. package/dist/stories/ox-input-mass-fraction.stories.d.ts +5 -0
  113. package/dist/stories/ox-input-mass-fraction.stories.js +36 -13
  114. package/dist/stories/ox-input-mass-fraction.stories.js.map +1 -1
  115. package/dist/stories/ox-input-multiple-colors.stories.d.ts +5 -0
  116. package/dist/stories/ox-input-multiple-colors.stories.js +31 -149
  117. package/dist/stories/ox-input-multiple-colors.stories.js.map +1 -1
  118. package/dist/stories/ox-input-options.stories.d.ts +5 -0
  119. package/dist/stories/ox-input-options.stories.js +34 -11
  120. package/dist/stories/ox-input-options.stories.js.map +1 -1
  121. package/dist/stories/ox-input-partition-keys.stories.d.ts +5 -0
  122. package/dist/stories/ox-input-partition-keys.stories.js +34 -11
  123. package/dist/stories/ox-input-partition-keys.stories.js.map +1 -1
  124. package/dist/stories/ox-input-privilege.stories.d.ts +5 -0
  125. package/dist/stories/ox-input-privilege.stories.js +36 -18
  126. package/dist/stories/ox-input-privilege.stories.js.map +1 -1
  127. package/dist/stories/ox-input-quantifier.stories.d.ts +5 -0
  128. package/dist/stories/ox-input-quantifier.stories.js +37 -10
  129. package/dist/stories/ox-input-quantifier.stories.js.map +1 -1
  130. package/dist/stories/ox-input-range.stories.d.ts +5 -0
  131. package/dist/stories/ox-input-range.stories.js +32 -5
  132. package/dist/stories/ox-input-range.stories.js.map +1 -1
  133. package/dist/stories/ox-input-search.stories.d.ts +5 -0
  134. package/dist/stories/ox-input-search.stories.js +35 -12
  135. package/dist/stories/ox-input-search.stories.js.map +1 -1
  136. package/dist/stories/ox-input-select-buttons.stories.d.ts +5 -0
  137. package/dist/stories/ox-input-select-buttons.stories.js +36 -14
  138. package/dist/stories/ox-input-select-buttons.stories.js.map +1 -1
  139. package/dist/stories/ox-input-unit.stories.d.ts +5 -0
  140. package/dist/stories/ox-input-unit.stories.js +40 -13
  141. package/dist/stories/ox-input-unit.stories.js.map +1 -1
  142. package/dist/stories/ox-input-value-map.stories.d.ts +5 -0
  143. package/dist/stories/ox-input-value-map.stories.js +36 -13
  144. package/dist/stories/ox-input-value-map.stories.js.map +1 -1
  145. package/dist/stories/ox-input-value-ranges.stories.d.ts +5 -0
  146. package/dist/stories/ox-input-value-ranges.stories.js +36 -13
  147. package/dist/stories/ox-input-value-ranges.stories.js.map +1 -1
  148. package/dist/stories/ox-input-work-shift.stories.d.ts +5 -0
  149. package/dist/stories/ox-input-work-shift.stories.js +36 -13
  150. package/dist/stories/ox-input-work-shift.stories.js.map +1 -1
  151. package/dist/stories/ox-select-set-options.stories.d.ts +53 -0
  152. package/dist/stories/ox-select-set-options.stories.js +183 -0
  153. package/dist/stories/ox-select-set-options.stories.js.map +1 -0
  154. package/dist/stories/ox-select.stories.d.ts +5 -0
  155. package/dist/stories/ox-select.stories.js +33 -7
  156. package/dist/stories/ox-select.stories.js.map +1 -1
  157. package/dist/tsconfig.tsbuildinfo +1 -1
  158. package/package.json +5 -5
  159. package/src/ox-buttons-radio.ts +37 -5
  160. package/src/ox-checkbox.ts +23 -19
  161. package/src/ox-input-3axis.ts +13 -2
  162. package/src/ox-input-3dish.ts +16 -11
  163. package/src/ox-input-angle.ts +9 -2
  164. package/src/ox-input-barcode.ts +12 -8
  165. package/src/ox-input-code.ts +3 -0
  166. package/src/ox-input-color.ts +8 -6
  167. package/src/ox-input-crontab.ts +29 -25
  168. package/src/ox-input-data.ts +15 -6
  169. package/src/ox-input-duration.ts +15 -34
  170. package/src/ox-input-file.ts +19 -14
  171. package/src/ox-input-hashtags.ts +14 -16
  172. package/src/ox-input-i18n-label.ts +4 -4
  173. package/src/ox-input-image.ts +1 -1
  174. package/src/ox-input-key-values.ts +6 -6
  175. package/src/ox-input-mass-fraction.ts +5 -5
  176. package/src/ox-input-multiple-colors.ts +2 -2
  177. package/src/ox-input-options.ts +6 -6
  178. package/src/ox-input-partition-keys.ts +6 -6
  179. package/src/ox-input-privilege.ts +13 -16
  180. package/src/ox-input-quantifier.ts +5 -5
  181. package/src/ox-input-range.ts +8 -8
  182. package/src/ox-input-search.ts +3 -5
  183. package/src/ox-input-select-buttons.ts +1 -1
  184. package/src/ox-input-table.ts +1 -1
  185. package/src/ox-input-unit-number.ts +5 -5
  186. package/src/ox-input-value-map.ts +6 -6
  187. package/src/ox-input-value-ranges.ts +7 -7
  188. package/src/ox-input-work-shift.ts +7 -7
  189. package/src/ox-select.ts +58 -11
  190. package/stories/ox-buttons-radio.stories.ts +96 -0
  191. package/stories/ox-checkbox.stories.ts +61 -14
  192. package/stories/ox-input-3axis.stories.ts +35 -12
  193. package/stories/ox-input-3dish.stories.ts +38 -15
  194. package/stories/ox-input-angle.stories.ts +39 -15
  195. package/stories/ox-input-barcode.stories.ts +37 -18
  196. package/stories/ox-input-code.stories.ts +42 -15
  197. package/stories/ox-input-crontab.stories.ts +43 -14
  198. package/stories/ox-input-data.stories.ts +38 -14
  199. package/stories/ox-input-duration.stories.ts +39 -15
  200. package/stories/ox-input-file.stories.ts +41 -16
  201. package/stories/ox-input-hashtags.stories.ts +42 -12
  202. package/stories/ox-input-i18n-label.stories.ts +55 -31
  203. package/stories/ox-input-key-values.stories.ts +44 -14
  204. package/stories/ox-input-mass-fraction.stories.ts +40 -15
  205. package/stories/ox-input-multiple-colors.stories.ts +34 -151
  206. package/stories/ox-input-options.stories.ts +37 -13
  207. package/stories/ox-input-partition-keys.stories.ts +42 -13
  208. package/stories/ox-input-privilege.stories.ts +45 -20
  209. package/stories/ox-input-quantifier.stories.ts +38 -10
  210. package/stories/ox-input-range.stories.ts +34 -5
  211. package/stories/ox-input-search.stories.ts +37 -12
  212. package/stories/ox-input-select-buttons.stories.ts +40 -16
  213. package/stories/ox-input-unit.stories.ts +43 -14
  214. package/stories/ox-input-value-map.stories.ts +40 -15
  215. package/stories/ox-input-value-ranges.stories.ts +40 -15
  216. package/stories/ox-input-work-shift.stories.ts +39 -15
  217. package/stories/ox-select-set-options.stories.ts +215 -0
  218. package/stories/ox-select.stories.ts +37 -7
  219. package/themes/dark-hc.css +151 -0
  220. package/themes/dark-mc.css +151 -0
  221. package/themes/dark.css +151 -0
  222. package/themes/grist-theme.css +169 -0
  223. package/themes/light-hc.css +151 -0
  224. package/themes/light-mc.css +151 -0
  225. package/themes/light.css +151 -0
  226. package/themes/md-typescale-styles.css +100 -0
  227. package/themes/spacing.css +43 -0
  228. package/themes/state-color.css +6 -0
  229. package/themes/app-theme.css +0 -145
  230. package/themes/input-theme.css +0 -32
@@ -1,6 +1,7 @@
1
1
  import '../src/ox-input-value-map.js'
2
2
 
3
3
  import { html, TemplateResult } from 'lit'
4
+ import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
4
5
 
5
6
  export default {
6
7
  title: 'ox-input-value-map',
@@ -10,7 +11,8 @@ export default {
10
11
  value: { control: 'object' },
11
12
  keytype: { control: 'select', options: ['string', 'number'] },
12
13
  valuetype: { control: 'select', options: ['string', 'boolean', 'number', 'color', 'date'] },
13
- disabled: { control: 'boolean' }
14
+ disabled: { control: 'boolean' },
15
+ theme: { control: 'select', options: ['light', 'dark'] }
14
16
  }
15
17
  }
16
18
 
@@ -26,6 +28,7 @@ interface ArgTypes {
26
28
  valuetype?: string
27
29
  keytype?: string
28
30
  disabled?: boolean
31
+ theme?: string
29
32
  }
30
33
 
31
34
  const Template: Story<ArgTypes> = ({
@@ -33,9 +36,14 @@ const Template: Story<ArgTypes> = ({
33
36
  value = {},
34
37
  keytype = 'string',
35
38
  valuetype = 'string',
36
- disabled
39
+ disabled,
40
+ theme = 'light'
37
41
  }: ArgTypes) => html`
38
- <link href="/themes/app-theme.css" rel="stylesheet" />
42
+ <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
43
+
44
+ <link href="/themes/light.css" rel="stylesheet" />
45
+ <link href="/themes/dark.css" rel="stylesheet" />
46
+ <link href="/themes/spacing.css" rel="stylesheet" />
39
47
 
40
48
  <link
41
49
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
@@ -49,22 +57,39 @@ const Template: Story<ArgTypes> = ({
49
57
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
50
58
  rel="stylesheet"
51
59
  />
60
+
52
61
  <style>
53
- body {
62
+ ${MDTypeScaleStyles.cssText}
63
+ </style>
64
+
65
+ <style>
66
+ .container {
67
+ height: 500px;
68
+ text-align: center;
69
+ padding: 20px;
70
+
71
+ background-color: var(--md-sys-color-primary-container);
72
+ color: var(--md-sys-color-on-primary-container);
54
73
  }
55
74
  </style>
56
75
 
57
- <ox-input-value-map
58
- @change=${(e: Event) => {
59
- console.log((e.target as HTMLInputElement).value)
60
- }}
61
- name=${name}
62
- .value=${value}
63
- keytype=${keytype}
64
- valuetype=${valuetype}
65
- ?disabled=${disabled}
66
- >
67
- </ox-input-value-map>
76
+ <script>
77
+ document.body.classList.add('${theme}')
78
+ </script>
79
+
80
+ <div class="container md-typescale-body-large-prominent">
81
+ <ox-input-value-map
82
+ @change=${(e: Event) => {
83
+ console.log((e.target as HTMLInputElement).value)
84
+ }}
85
+ name=${name}
86
+ .value=${value}
87
+ keytype=${keytype}
88
+ valuetype=${valuetype}
89
+ ?disabled=${disabled}
90
+ >
91
+ </ox-input-value-map>
92
+ </div>
68
93
  `
69
94
 
70
95
  export const Regular = Template.bind({})
@@ -1,6 +1,7 @@
1
1
  import '../src/ox-input-value-ranges.js'
2
2
 
3
3
  import { html, TemplateResult } from 'lit'
4
+ import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
4
5
 
5
6
  export default {
6
7
  title: 'ox-input-value-ranges',
@@ -10,7 +11,8 @@ export default {
10
11
  value: { control: 'object' },
11
12
  keytype: { control: 'select', options: ['string', 'number'] },
12
13
  valuetype: { control: 'select', options: ['string', 'boolean', 'number', 'color', 'date'] },
13
- disabled: { control: 'boolean' }
14
+ disabled: { control: 'boolean' },
15
+ theme: { control: 'select', options: ['light', 'dark'] }
14
16
  }
15
17
  }
16
18
 
@@ -26,6 +28,7 @@ interface ArgTypes {
26
28
  valuetype?: string
27
29
  keytype?: string
28
30
  disabled?: boolean
31
+ theme?: string
29
32
  }
30
33
 
31
34
  const Template: Story<ArgTypes> = ({
@@ -33,9 +36,14 @@ const Template: Story<ArgTypes> = ({
33
36
  value = {},
34
37
  keytype = 'string',
35
38
  valuetype = 'string',
36
- disabled
39
+ disabled,
40
+ theme = 'light'
37
41
  }: ArgTypes) => html`
38
- <link href="/themes/app-theme.css" rel="stylesheet" />
42
+ <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
43
+
44
+ <link href="/themes/light.css" rel="stylesheet" />
45
+ <link href="/themes/dark.css" rel="stylesheet" />
46
+ <link href="/themes/spacing.css" rel="stylesheet" />
39
47
 
40
48
  <link
41
49
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
@@ -49,22 +57,39 @@ const Template: Story<ArgTypes> = ({
49
57
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
50
58
  rel="stylesheet"
51
59
  />
60
+
52
61
  <style>
53
- body {
62
+ ${MDTypeScaleStyles.cssText}
63
+ </style>
64
+
65
+ <style>
66
+ .container {
67
+ height: 500px;
68
+ text-align: center;
69
+ padding: 20px;
70
+
71
+ background-color: var(--md-sys-color-primary-container);
72
+ color: var(--md-sys-color-on-primary-container);
54
73
  }
55
74
  </style>
56
75
 
57
- <ox-input-value-ranges
58
- @change=${(e: Event) => {
59
- console.log((e.target as HTMLInputElement).value)
60
- }}
61
- name=${name}
62
- .value=${value}
63
- keytype=${keytype}
64
- valuetype=${valuetype}
65
- ?disabled=${disabled}
66
- >
67
- </ox-input-value-ranges>
76
+ <script>
77
+ document.body.classList.add('${theme}')
78
+ </script>
79
+
80
+ <div class="container md-typescale-body-large-prominent">
81
+ <ox-input-value-ranges
82
+ @change=${(e: Event) => {
83
+ console.log((e.target as HTMLInputElement).value)
84
+ }}
85
+ name=${name}
86
+ .value=${value}
87
+ keytype=${keytype}
88
+ valuetype=${valuetype}
89
+ ?disabled=${disabled}
90
+ >
91
+ </ox-input-value-ranges>
92
+ </div>
68
93
  `
69
94
 
70
95
  export const Regular = Template.bind({})
@@ -2,6 +2,7 @@ import '../src/ox-input-work-shift.js'
2
2
  import '../src/locale/locale-picker.js'
3
3
 
4
4
  import { html, TemplateResult } from 'lit'
5
+ import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
5
6
 
6
7
  export default {
7
8
  title: 'ox-input-work-shift',
@@ -9,7 +10,8 @@ export default {
9
10
  argTypes: {
10
11
  value: { control: 'object' },
11
12
  name: { control: 'text' },
12
- disabled: { control: 'boolean' }
13
+ disabled: { control: 'boolean' },
14
+ theme: { control: 'select', options: ['light', 'dark'] }
13
15
  }
14
16
  }
15
17
 
@@ -23,10 +25,15 @@ interface ArgTypes {
23
25
  name?: string
24
26
  value?: object
25
27
  disabled?: boolean
28
+ theme?: string
26
29
  }
27
30
 
28
- const Template: Story<ArgTypes> = ({ name = 'work-shift', value = [], disabled }: ArgTypes) => html`
29
- <link href="/themes/app-theme.css" rel="stylesheet" />
31
+ const Template: Story<ArgTypes> = ({ name = 'work-shift', value = [], disabled, theme = 'light' }: ArgTypes) => html`
32
+ <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
33
+
34
+ <link href="/themes/light.css" rel="stylesheet" />
35
+ <link href="/themes/dark.css" rel="stylesheet" />
36
+ <link href="/themes/spacing.css" rel="stylesheet" />
30
37
 
31
38
  <link
32
39
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
@@ -40,23 +47,40 @@ const Template: Story<ArgTypes> = ({ name = 'work-shift', value = [], disabled }
40
47
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
41
48
  rel="stylesheet"
42
49
  />
50
+
43
51
  <style>
44
- body {
52
+ ${MDTypeScaleStyles.cssText}
53
+ </style>
54
+
55
+ <style>
56
+ .container {
57
+ height: 500px;
58
+ text-align: center;
59
+ padding: 20px;
60
+
61
+ background-color: var(--md-sys-color-primary-container);
62
+ color: var(--md-sys-color-on-primary-container);
45
63
  }
46
64
  </style>
47
65
 
48
- <locale-picker></locale-picker>
49
- <br /><br />
66
+ <script>
67
+ document.body.classList.add('${theme}')
68
+ </script>
69
+
70
+ <div class="container md-typescale-body-large-prominent">
71
+ <locale-picker></locale-picker>
72
+ <br /><br />
50
73
 
51
- <ox-input-work-shift
52
- @change=${(e: Event) => {
53
- console.log((e.target as HTMLInputElement).value)
54
- }}
55
- name=${name}
56
- .value=${value}
57
- ?disabled=${disabled}
58
- >
59
- </ox-input-work-shift>
74
+ <ox-input-work-shift
75
+ @change=${(e: Event) => {
76
+ console.log((e.target as HTMLInputElement).value)
77
+ }}
78
+ name=${name}
79
+ .value=${value}
80
+ ?disabled=${disabled}
81
+ >
82
+ </ox-input-work-shift>
83
+ </div>
60
84
  `
61
85
 
62
86
  export const Regular = Template.bind({})
@@ -0,0 +1,215 @@
1
+ import '../src/ox-select.js'
2
+ import '../src/ox-checkbox.js'
3
+
4
+ import { OxSelect } from '../src/ox-select.js'
5
+ import { html, TemplateResult } from 'lit'
6
+ import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
7
+
8
+ export default {
9
+ title: 'ox-select-set-options',
10
+ component: 'ox-select',
11
+ argTypes: {
12
+ placeholder: { control: 'text' },
13
+ name: { control: 'text' },
14
+ options: { control: 'object' },
15
+ multiple: { control: 'boolean' },
16
+ withSearch: { control: 'boolean' },
17
+ disabled: { control: 'boolean' },
18
+ theme: { control: 'select', options: ['light', 'dark'] }
19
+ }
20
+ }
21
+
22
+ interface Story<T> {
23
+ (args: T): TemplateResult
24
+ args?: Partial<T>
25
+ argTypes?: Record<string, unknown>
26
+ }
27
+
28
+ interface ArgTypes {
29
+ placeholder?: string
30
+ name?: string
31
+ value?: object | string
32
+ options?: string[] | { display: string; value: string }[]
33
+ multiple?: boolean
34
+ withSearch?: boolean
35
+ disabled?: boolean
36
+ theme?: string
37
+ }
38
+
39
+ const Template: Story<ArgTypes> = ({
40
+ placeholder = 'Checkbox',
41
+ name = 'hello',
42
+ value = '',
43
+ options = [],
44
+ multiple,
45
+ withSearch,
46
+ disabled,
47
+ theme = 'light'
48
+ }: ArgTypes) => html`
49
+ <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
50
+
51
+ <link href="/themes/light.css" rel="stylesheet" />
52
+ <link href="/themes/dark.css" rel="stylesheet" />
53
+ <link href="/themes/spacing.css" rel="stylesheet" />
54
+
55
+ <link
56
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
57
+ rel="stylesheet"
58
+ />
59
+ <link
60
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
61
+ rel="stylesheet"
62
+ />
63
+ <link
64
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
65
+ rel="stylesheet"
66
+ />
67
+
68
+ <style>
69
+ ${MDTypeScaleStyles.cssText}
70
+ </style>
71
+
72
+ <style>
73
+ .container {
74
+ height: 500px;
75
+ text-align: center;
76
+ padding: 20px;
77
+
78
+ background-color: var(--md-sys-color-primary-container);
79
+ color: var(--md-sys-color-on-primary-container);
80
+ }
81
+ </style>
82
+
83
+ <script>
84
+ document.body.classList.add('${theme}')
85
+ </script>
86
+
87
+ <div class="container md-typescale-body-large-prominent">
88
+ <ox-select
89
+ name=${name}
90
+ @change=${(e: Event) => {
91
+ console.log((e.target as HTMLInputElement).value)
92
+ }}
93
+ placeholder=${placeholder}
94
+ .value=${value}
95
+ ?disabled=${disabled}
96
+ >
97
+ </ox-select>
98
+
99
+ <input
100
+ type="button"
101
+ value="set options"
102
+ @click=${() => {
103
+ const select = document.querySelector('ox-select') as OxSelect
104
+ select.setOptions(options, { multiple, withSearch })
105
+ select.value = JSON.parse(JSON.stringify(value))
106
+ }}
107
+ />
108
+ </div>
109
+ `
110
+
111
+ export const Regular = Template.bind({})
112
+ Regular.args = {
113
+ placeholder: 'single select',
114
+ name: 'label',
115
+ value: '',
116
+ multiple: false,
117
+ options: [
118
+ {
119
+ value: 'A',
120
+ display: 'LABEL-A'
121
+ },
122
+ {
123
+ value: 'B',
124
+ display: 'LABEL-B'
125
+ },
126
+ {
127
+ value: 'C',
128
+ display: 'LABEL-C'
129
+ },
130
+ {
131
+ value: 'TOO LONG VALUE',
132
+ display: 'LABEL-TOO LONG VALUE'
133
+ }
134
+ ]
135
+ }
136
+
137
+ export const MultipleSelect = Template.bind({})
138
+ MultipleSelect.args = {
139
+ placeholder: 'multiple select',
140
+ name: 'multiple',
141
+ multiple: true,
142
+ withSearch: true,
143
+ value: ['B', 'TOO LONG VALUE'],
144
+ options: [
145
+ 'A',
146
+ 'B',
147
+ 'C',
148
+ 'D',
149
+ 'E',
150
+ 'F',
151
+ 'G',
152
+ 'H',
153
+ 'I',
154
+ 'J',
155
+ 'K',
156
+ 'L',
157
+ 'M',
158
+ 'O',
159
+ 'P',
160
+ 'Q',
161
+ 'R',
162
+ 'S',
163
+ 'T',
164
+ 'U',
165
+ 'V',
166
+ 'W',
167
+ 'X',
168
+ 'Y',
169
+ 'Z',
170
+ 'TOO LONG VALUE'
171
+ ]
172
+ }
173
+
174
+ export const MultipleWithCheckbox = Template.bind({})
175
+ MultipleWithCheckbox.args = {
176
+ placeholder: 'multiple with checkbox',
177
+ name: 'multiple',
178
+ multiple: true,
179
+ withSearch: true,
180
+ value: ['B', 'C', 'F'],
181
+ options: [
182
+ {
183
+ value: 'A',
184
+ display: 'A'
185
+ },
186
+ {
187
+ value: 'B',
188
+ display: 'B'
189
+ },
190
+ {
191
+ value: 'C',
192
+ display: 'C'
193
+ },
194
+ {
195
+ value: 'D',
196
+ display: 'D'
197
+ },
198
+ {
199
+ value: 'E',
200
+ display: 'E'
201
+ },
202
+ {
203
+ value: 'F',
204
+ display: 'F'
205
+ },
206
+ {
207
+ value: 'G',
208
+ display: 'G'
209
+ },
210
+ {
211
+ value: 'TOO LONG VALUE',
212
+ display: 'TOO LONG VALUE'
213
+ }
214
+ ]
215
+ }
@@ -2,6 +2,7 @@ import '../src/ox-select.js'
2
2
  import '../src/ox-checkbox.js'
3
3
 
4
4
  import { html, TemplateResult } from 'lit'
5
+ import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
5
6
 
6
7
  export default {
7
8
  title: 'ox-select',
@@ -9,7 +10,8 @@ export default {
9
10
  argTypes: {
10
11
  placeholder: { control: 'text' },
11
12
  name: { control: 'text' },
12
- disabled: { control: 'boolean' }
13
+ disabled: { control: 'boolean' },
14
+ theme: { control: 'select', options: ['light', 'dark'] }
13
15
  }
14
16
  }
15
17
 
@@ -25,6 +27,7 @@ interface ArgTypes {
25
27
  value?: object | string
26
28
  slot?: TemplateResult
27
29
  disabled?: boolean
30
+ theme?: string
28
31
  }
29
32
 
30
33
  const Template: Story<ArgTypes> = ({
@@ -32,9 +35,14 @@ const Template: Story<ArgTypes> = ({
32
35
  name = 'hello',
33
36
  value = '',
34
37
  slot,
35
- disabled
38
+ disabled,
39
+ theme = 'light'
36
40
  }: ArgTypes) => html`
37
- <link href="/themes/app-theme.css" rel="stylesheet" />
41
+ <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
42
+
43
+ <link href="/themes/light.css" rel="stylesheet" />
44
+ <link href="/themes/dark.css" rel="stylesheet" />
45
+ <link href="/themes/spacing.css" rel="stylesheet" />
38
46
 
39
47
  <link
40
48
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
@@ -49,7 +57,26 @@ const Template: Story<ArgTypes> = ({
49
57
  rel="stylesheet"
50
58
  />
51
59
 
52
- <div style="height: 300px">
60
+ <style>
61
+ ${MDTypeScaleStyles.cssText}
62
+ </style>
63
+
64
+ <style>
65
+ .container {
66
+ height: 500px;
67
+ text-align: center;
68
+ padding: 20px;
69
+
70
+ background-color: var(--md-sys-color-primary-container);
71
+ color: var(--md-sys-color-on-primary-container);
72
+ }
73
+ </style>
74
+
75
+ <script>
76
+ document.body.classList.add('${theme}')
77
+ </script>
78
+
79
+ <div class="container md-typescale-body-large-prominent">
53
80
  <ox-select
54
81
  name=${name}
55
82
  @change=${(e: Event) => {
@@ -124,12 +151,15 @@ MultipleWithCheckbox.args = {
124
151
  slot: html`
125
152
  <ox-popup-list attr-selected="checked" multiple with-search>
126
153
  <ox-checkbox
127
- option
128
154
  @change=${(e: Event) => {
129
155
  const target = e.target as HTMLInputElement
130
- const options = target.parentElement!.querySelectorAll('[option]')
131
- console.log(options)
156
+ const options = Array.from(target.parentElement!.querySelectorAll('[option]')).filter(
157
+ option => !option.hasAttribute('hidden')
158
+ )
132
159
  options.forEach(option => ((option as HTMLInputElement).checked = target.checked))
160
+ ;(target.closest('ox-select') as any)!.value = options
161
+ .map(option => ((option as HTMLInputElement).checked ? (option as HTMLInputElement).value : undefined))
162
+ .filter(Boolean)
133
163
  }}
134
164
  >set all</ox-checkbox
135
165
  >