@operato/form 2.0.0-alpha.8 → 2.0.0-alpha.86

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 (67) hide show
  1. package/CHANGELOG.md +121 -0
  2. package/demo/index.html +14 -3
  3. package/dist/src/components/ox-custom-input.d.ts +1 -1
  4. package/dist/src/components/ox-custom-select.d.ts +1 -1
  5. package/dist/src/components/ox-file-uploader.d.ts +1 -1
  6. package/dist/src/components/ox-file-uploader.js +7 -7
  7. package/dist/src/components/ox-file-uploader.js.map +1 -1
  8. package/dist/src/components/ox-form-paginator.d.ts +1 -1
  9. package/dist/src/components/ox-search-form.d.ts +2 -2
  10. package/dist/src/components/ox-search-form.js +36 -36
  11. package/dist/src/components/ox-search-form.js.map +1 -1
  12. package/dist/src/filters/filter-checkbox.d.ts +1 -1
  13. package/dist/src/filters/filter-checkbox.js +4 -2
  14. package/dist/src/filters/filter-checkbox.js.map +1 -1
  15. package/dist/src/filters/filter-input-barcode.d.ts +1 -1
  16. package/dist/src/filters/filter-input-barcode.js.map +1 -1
  17. package/dist/src/filters/filter-input.d.ts +1 -1
  18. package/dist/src/filters/filter-input.js.map +1 -1
  19. package/dist/src/filters/filter-range-date.d.ts +1 -1
  20. package/dist/src/filters/filter-range-date.js +14 -3
  21. package/dist/src/filters/filter-range-date.js.map +1 -1
  22. package/dist/src/filters/filter-range-number.d.ts +1 -1
  23. package/dist/src/filters/filter-range-number.js.map +1 -1
  24. package/dist/src/filters/filter-select.d.ts +1 -1
  25. package/dist/src/filters/filter-select.js.map +1 -1
  26. package/dist/src/filters/filter-styles.js +38 -28
  27. package/dist/src/filters/filter-styles.js.map +1 -1
  28. package/dist/src/filters/index.d.ts +1 -1
  29. package/dist/src/filters/index.js +1 -1
  30. package/dist/src/filters/index.js.map +1 -1
  31. package/dist/src/filters/ox-filters-form-base.d.ts +5 -8
  32. package/dist/src/filters/ox-filters-form-base.js +92 -69
  33. package/dist/src/filters/ox-filters-form-base.js.map +1 -1
  34. package/dist/src/filters/registry.d.ts +1 -1
  35. package/dist/src/filters/registry.js.map +1 -1
  36. package/dist/src/{filters/types.d.ts → types.d.ts} +10 -0
  37. package/dist/src/types.js.map +1 -0
  38. package/dist/stories/{ox-filter-form-barcode.stories.js → ox-filters-form-barcode.stories.js} +14 -6
  39. package/dist/stories/ox-filters-form-barcode.stories.js.map +1 -0
  40. package/dist/stories/{ox-filter-form-base.stories.d.ts → ox-filters-form-base.stories.d.ts} +3 -2
  41. package/dist/stories/ox-filters-form-base.stories.js +133 -0
  42. package/dist/stories/ox-filters-form-base.stories.js.map +1 -0
  43. package/dist/tsconfig.tsbuildinfo +1 -1
  44. package/package.json +17 -16
  45. package/src/components/ox-file-uploader.ts +7 -7
  46. package/src/components/ox-search-form.ts +83 -83
  47. package/src/filters/filter-checkbox.ts +5 -3
  48. package/src/filters/filter-input-barcode.ts +1 -1
  49. package/src/filters/filter-input.ts +1 -1
  50. package/src/filters/filter-range-date.ts +21 -6
  51. package/src/filters/filter-range-number.ts +1 -1
  52. package/src/filters/filter-select.ts +1 -1
  53. package/src/filters/filter-styles.ts +38 -28
  54. package/src/filters/index.ts +1 -1
  55. package/src/filters/ox-filters-form-base.ts +100 -71
  56. package/src/filters/registry.ts +1 -1
  57. package/src/{filters/types.ts → types.ts} +13 -0
  58. package/stories/{ox-filter-form-barcode.stories.ts → ox-filters-form-barcode.stories.ts} +13 -5
  59. package/stories/ox-filters-form-base.stories.ts +150 -0
  60. package/themes/form-theme.css +1 -1
  61. package/dist/src/filters/types.js.map +0 -1
  62. package/dist/stories/ox-filter-form-barcode.stories.js.map +0 -1
  63. package/dist/stories/ox-filter-form-base.stories.js +0 -82
  64. package/dist/stories/ox-filter-form-base.stories.js.map +0 -1
  65. package/stories/ox-filter-form-base.stories.ts +0 -97
  66. /package/dist/src/{filters/types.js → types.js} +0 -0
  67. /package/dist/stories/{ox-filter-form-barcode.stories.d.ts → ox-filters-form-barcode.stories.d.ts} +0 -0
@@ -7,20 +7,16 @@ import json5 from 'json5'
7
7
  import { css, html, LitElement, PropertyValues, TemplateResult } from 'lit'
8
8
  import { customElement, property, queryAsync } from 'lit/decorators.js'
9
9
 
10
+ import { getDefaultValue } from '@operato/time-calculator'
11
+
10
12
  import { FilterStyles } from './filter-styles.js'
11
13
  import { getFilterRenderer } from './registry.js'
12
- import { FilterConfig, FilterOperator, FilterValue } from './types.js'
14
+ import { FilterConfig, FilterOperator, FilterValue } from '../types.js'
13
15
 
14
16
  export type QueryFilterRangeValue = [from: number, to: number]
15
17
 
16
- export type QueryFilter = {
17
- name: string
18
- operator: FilterOperator
19
- value: any
20
- }
21
-
22
18
  @customElement('ox-filters-form-base')
23
- export class FiltersFormBase extends LitElement {
19
+ export class OxFiltersFormBase extends LitElement {
24
20
  static styles = [
25
21
  FilterStyles,
26
22
  css`
@@ -39,6 +35,7 @@ export class FiltersFormBase extends LitElement {
39
35
  form > * {
40
36
  display: flex;
41
37
  align-items: center;
38
+ gap: var(--input-intra-gap, 7px);
42
39
  }
43
40
 
44
41
  label span {
@@ -53,8 +50,8 @@ export class FiltersFormBase extends LitElement {
53
50
  `
54
51
  ]
55
52
 
56
- @property({ type: Object }) value: FilterValue[] = []
57
- @property({ type: Object }) filters: FilterConfig[] = []
53
+ @property({ type: Array }) value: FilterValue[] = []
54
+ @property({ type: Array }) filters: FilterConfig[] = []
58
55
  @property({ type: Boolean, attribute: 'url-params-sensitive' }) urlParamsSensitive?: boolean
59
56
  @property({ type: Boolean, attribute: 'autofocus' }) autofocus: boolean = true
60
57
 
@@ -67,19 +64,43 @@ export class FiltersFormBase extends LitElement {
67
64
  super.connectedCallback()
68
65
 
69
66
  this.renderRoot.addEventListener('change', async (e: Event) => {
70
- this.dispatchEvent(
71
- new CustomEvent('filters-change', {
72
- bubbles: true,
73
- composed: true,
74
- detail: {
75
- filters: await this.getQueryFilters(),
76
- from: 'filters-form'
77
- }
78
- })
79
- )
67
+ const { target, detail: value } = e as CustomEvent
68
+ const name = (target as HTMLInputElement).name
69
+ const {
70
+ label,
71
+ type,
72
+ operator,
73
+ value: defaultValue,
74
+ onchange
75
+ } = this.filters.find(filter => filter.name == name) || {}
76
+
77
+ const keepGoing = onchange ? onchange.call(null, value ?? (target as HTMLInputElement).value, this) : true
78
+
79
+ keepGoing &&
80
+ this.dispatchEvent(
81
+ new CustomEvent('filters-change', {
82
+ bubbles: true,
83
+ composed: true,
84
+ detail: {
85
+ filters: this.value,
86
+ from: 'filters-form'
87
+ }
88
+ })
89
+ )
80
90
  })
81
91
  }
82
92
 
93
+ buildDefaultValue(operator: string, defaultValue: any) {
94
+ if (defaultValue === undefined) {
95
+ return
96
+ }
97
+ if (operator == 'between') {
98
+ return (defaultValue as Array<any>).map(v => getDefaultValue(v, this))
99
+ } else {
100
+ return getDefaultValue(defaultValue, this)
101
+ }
102
+ }
103
+
83
104
  render(): TemplateResult {
84
105
  return html`
85
106
  <form
@@ -88,14 +109,16 @@ export class FiltersFormBase extends LitElement {
88
109
  }}
89
110
  >
90
111
  ${this.filters.map((filter: FilterConfig) => {
91
- const { name, label, type, operator } = filter
112
+ const { name, label, type, operator, value: defaultValue } = filter
92
113
  const idx = operator === 'between' ? 1 : 0
93
114
  const renderer = getFilterRenderer(
94
115
  operator === 'like' || operator === 'i_like' || operator === 'i_nlike' || operator === 'nlike'
95
116
  ? 'text'
96
117
  : type
97
118
  )[idx]
98
- const value = this.value?.find(filter => filter.name == name)?.value
119
+
120
+ const value =
121
+ this.value?.find(filter => filter.name == name)?.value ?? this.buildDefaultValue(operator!, defaultValue)
99
122
 
100
123
  if (!renderer) {
101
124
  return html``
@@ -103,58 +126,64 @@ export class FiltersFormBase extends LitElement {
103
126
 
104
127
  return type === 'search'
105
128
  ? html`<ox-input-search name="search" .value=${value} ?autofocus=${this.autofocus}></ox-input-search>`
106
- : type !== 'select'
107
- ? html`
108
- <label filter-title ?between=${operator == 'between'}
109
- ><span>${label}</span> ${renderer(filter, value, this)}
110
- </label>
111
- `
112
- : operator === 'in'
113
- ? html`
114
- <ox-select
115
- name=${name}
116
- placeholder=${label}
117
- .value=${value}
118
- @change=${(e: CustomEvent) =>
119
- e.target?.dispatchEvent(
120
- new CustomEvent('filter-change', {
121
- detail: {
122
- name,
123
- operator,
124
- value: e.detail
125
- }
126
- })
127
- )}
128
- >
129
- <ox-popup-list multiple attr-selected="checked" with-search>
130
- ${renderer(filter, value, this)}
131
- </ox-popup-list>
132
- </ox-select>
133
- `
134
- : html`
135
- <ox-select
136
- name=${name}
137
- placeholder=${label}
138
- .value=${value}
139
- @change=${(e: CustomEvent) =>
140
- e.target?.dispatchEvent(
141
- new CustomEvent('filter-change', {
142
- detail: {
143
- name,
144
- operator,
145
- value: e.detail
146
- }
147
- })
148
- )}
149
- >
150
- <ox-popup-list with-search> ${renderer(filter, value, this)} </ox-popup-list>
151
- </ox-select>
152
- `
129
+ : type === 'boolean'
130
+ ? renderer(filter, value, this)
131
+ : type !== 'select'
132
+ ? html`
133
+ <label filter-title ?between=${operator == 'between'}
134
+ ><span>${label}</span> ${renderer(filter, value, this)}
135
+ </label>
136
+ `
137
+ : operator === 'in'
138
+ ? html`
139
+ <ox-select
140
+ name=${name}
141
+ placeholder=${label}
142
+ .value=${value}
143
+ @change=${(e: CustomEvent) =>
144
+ e.target?.dispatchEvent(
145
+ new CustomEvent('filter-change', {
146
+ detail: {
147
+ name,
148
+ operator,
149
+ value: e.detail
150
+ }
151
+ })
152
+ )}
153
+ >
154
+ <ox-popup-list multiple attr-selected="checked" with-search>
155
+ ${renderer(filter, value, this)}
156
+ </ox-popup-list>
157
+ </ox-select>
158
+ `
159
+ : html`
160
+ <ox-select
161
+ name=${name}
162
+ placeholder=${label}
163
+ .value=${value}
164
+ @change=${(e: CustomEvent) =>
165
+ e.target?.dispatchEvent(
166
+ new CustomEvent('filter-change', {
167
+ detail: {
168
+ name,
169
+ operator,
170
+ value: e.detail
171
+ }
172
+ })
173
+ )}
174
+ >
175
+ <ox-popup-list with-search> ${renderer(filter, value, this)} </ox-popup-list>
176
+ </ox-select>
177
+ `
153
178
  })}
154
179
  </form>
155
180
  `
156
181
  }
157
182
 
183
+ getFieldByName(name: string) {
184
+ return this.renderRoot.querySelector(`[name=${name}]`)
185
+ }
186
+
158
187
  async updated(changes: PropertyValues<this>) {
159
188
  if (changes.has('urlParamsSensitive')) {
160
189
  if (this.urlParamsSensitive) {
@@ -218,7 +247,7 @@ export class FiltersFormBase extends LitElement {
218
247
  }
219
248
  }
220
249
 
221
- async getQueryFilters(): Promise<QueryFilter[]> {
250
+ async getQueryFilters(): Promise<FilterValue[]> {
222
251
  const formData = new FormData(await this.form)
223
252
 
224
253
  var filters = this.filters
@@ -257,7 +286,7 @@ export class FiltersFormBase extends LitElement {
257
286
  value: filterValue.length === 1 ? filterValue[0] : filterValue
258
287
  }
259
288
  })
260
- .filter(result => result !== undefined) as QueryFilter[]
289
+ .filter(result => result !== undefined) as FilterValue[]
261
290
 
262
291
  return filters
263
292
  }
@@ -4,7 +4,7 @@ import { FilterInput } from './filter-input.js'
4
4
  import { FilterRangeDate } from './filter-range-date.js'
5
5
  import { FilterRangeNumber } from './filter-range-number.js'
6
6
  import { FilterSelect } from './filter-select.js'
7
- import { FilterSelectRenderer } from './types.js'
7
+ import { FilterSelectRenderer } from '../types.js'
8
8
 
9
9
  var RENDERERS: {
10
10
  [name: string]: FilterSelectRenderer[]
@@ -1,4 +1,5 @@
1
1
  import { TemplateResult } from 'lit-html'
2
+ import { OxFiltersFormBase } from './filters/ox-filters-form-base'
2
3
 
3
4
  export type FilterOperator =
4
5
  | 'search'
@@ -32,6 +33,16 @@ export type FilterConfig = {
32
33
  type: string
33
34
  operator?: FilterOperator
34
35
  options?: { [key: string]: any }
36
+ value?:
37
+ | string
38
+ | number
39
+ | boolean
40
+ | { name: string; [params: string]: any }
41
+ | string[]
42
+ | number[]
43
+ | { name: string; [params: string]: any }[]
44
+ | undefined
45
+ onchange?: FilterChangedCallback
35
46
  }
36
47
 
37
48
  export type FilterValue = {
@@ -45,3 +56,5 @@ export type FilterSelectRenderer = (
45
56
  value: string | number | boolean | string[] | number[] | any | undefined,
46
57
  owner: Element
47
58
  ) => TemplateResult | string | void
59
+
60
+ export type FilterChangedCallback = (value: any, form: OxFiltersFormBase) => boolean
@@ -27,11 +27,19 @@ interface ArgTypes {
27
27
  const Template: Story<ArgTypes> = ({ value, filters, urlParamsSensitive }: ArgTypes) => html`
28
28
  <link href="/themes/app-theme.css" rel="stylesheet" />
29
29
  <link href="/themes/form-theme.css" rel="stylesheet" />
30
- <link href="https://fonts.googleapis.com/css?family=Material+Icons&display=block" rel="stylesheet" />
31
- <style>
32
- body {
33
- }
34
- </style>
30
+
31
+ <link
32
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
33
+ rel="stylesheet"
34
+ />
35
+ <link
36
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
37
+ rel="stylesheet"
38
+ />
39
+ <link
40
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
41
+ rel="stylesheet"
42
+ />
35
43
 
36
44
  <ox-filters-form-base
37
45
  .value=${value}
@@ -0,0 +1,150 @@
1
+ import '../src/filters/ox-filters-form-base.js'
2
+
3
+ import { html, TemplateResult } from 'lit'
4
+ import { OxFiltersFormBase, FilterConfig, FilterValue } from '../src/index.js'
5
+
6
+ export default {
7
+ title: 'ox-filters-form-base',
8
+ component: 'ox-filters-form-base',
9
+ argTypes: {
10
+ value: { control: 'object' },
11
+ filters: { control: 'object' },
12
+ urlParamsSensitive: { 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
+ value?: FilterValue[]
24
+ filters?: FilterConfig[]
25
+ urlParamsSensitive: boolean
26
+ }
27
+
28
+ const Template: Story<ArgTypes> = ({ value, filters, urlParamsSensitive }: ArgTypes) => html`
29
+ <link href="/themes/app-theme.css" rel="stylesheet" />
30
+ <link href="/themes/form-theme.css" rel="stylesheet" />
31
+ <link
32
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
33
+ rel="stylesheet"
34
+ />
35
+ <link
36
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
37
+ rel="stylesheet"
38
+ />
39
+ <link
40
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
41
+ rel="stylesheet"
42
+ />
43
+
44
+ <style>
45
+ body {
46
+ height: 500px;
47
+ }
48
+ </style>
49
+
50
+ <style>
51
+ ox-filters-form-base {
52
+ --input-gap-vertical: 8px;
53
+ --input-gap-horizontal: 16px;
54
+
55
+ --ox-filters-input-placeholder-color: var(--primary-color);
56
+
57
+ --ox-filters-input-border: 1px solid rgba(0, 0, 0, 0.2);
58
+ --ox-filters-input-focus-border: 1px solid var(--primary-color);
59
+ --ox-filters-input-font: normal 14px var(--theme-font);
60
+ --ox-filters-input-color: var(--primary-text-color);
61
+ --ox-filters-input-focus-color: var(--primary-color);
62
+ --ox-filters-label-font: normal 14px var(--theme-font);
63
+ --ox-filters-label-color: var(--primary-text-color);
64
+
65
+ --ox-filters-form-gap: var(--input-gap-vertical, 8px) var(--input-gap-horizontal, 16px);
66
+ --ox-filters-input-padding: 6px 2px;
67
+ }
68
+ </style>
69
+
70
+ <ox-filters-form-base
71
+ .value=${value!}
72
+ .filters=${filters!}
73
+ ?url-params-sensitive=${urlParamsSensitive}
74
+ @filters-change=${(e: CustomEvent) => {
75
+ console.log('filters changed', e.detail)
76
+ }}
77
+ >
78
+ </ox-filters-form-base>
79
+ `
80
+
81
+ export const Regular = Template.bind({})
82
+ Regular.args = {
83
+ filters: [
84
+ {
85
+ name: 'search',
86
+ type: 'search',
87
+ label: 'search',
88
+ operator: 'eq',
89
+ value: ''
90
+ },
91
+ {
92
+ name: 'test',
93
+ type: 'string',
94
+ label: 'name',
95
+ operator: 'eq',
96
+ value: 'No Name'
97
+ },
98
+ {
99
+ name: 'active',
100
+ type: 'boolean',
101
+ label: 'active',
102
+ operator: 'eq',
103
+ value: true,
104
+ onchange: (value, formBase: OxFiltersFormBase) => {
105
+ const sss = formBase.getFieldByName('sss') as HTMLInputElement
106
+ sss.value = value ? 'DEF' : 'ABC'
107
+
108
+ return false
109
+ }
110
+ },
111
+ {
112
+ name: 'sss',
113
+ type: 'select',
114
+ label: 'sss',
115
+ operator: 'eq',
116
+ options: () => {
117
+ return [
118
+ {
119
+ display: '',
120
+ value: ''
121
+ },
122
+ {
123
+ display: 'ABC',
124
+ value: 'ABC'
125
+ },
126
+ {
127
+ display: 'DEF',
128
+ value: 'DEF'
129
+ }
130
+ ]
131
+ }
132
+ },
133
+ {
134
+ name: 'range',
135
+ type: 'number',
136
+ label: 'range',
137
+ operator: 'between'
138
+ },
139
+ {
140
+ name: 'date-range',
141
+ type: 'date',
142
+ label: 'date',
143
+ operator: 'between',
144
+ value: [
145
+ { name: 'week', params: { relativeWeeks: -1 } },
146
+ { name: 'today', params: { relativeDays: +1 } }
147
+ ]
148
+ }
149
+ ]
150
+ }
@@ -1,4 +1,5 @@
1
1
  body {
2
+ /* */
2
3
  --form-border: none;
3
4
  --form-margin: var(--margin-wide);
4
5
  --form-max-width: 700px;
@@ -12,7 +13,6 @@ body {
12
13
  --legend-text-color: var(--secondary-text-color);
13
14
  --legend-border-bottom: 1px solid var(--primary-color);
14
15
 
15
- --label-padding: 3px 0;
16
16
  --label-font: normal 14px var(--theme-font);
17
17
  --label-color: var(--secondary-color);
18
18
 
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/filters/types.ts"],"names":[],"mappings":"","sourcesContent":["import { TemplateResult } from 'lit-html'\n\nexport type FilterOperator =\n | 'search'\n | 'eq'\n | 'between'\n | 'gte'\n | 'lte'\n | 'is_not_true'\n | 'in'\n | 'like'\n | 'i_like'\n | 'noteq'\n | 'is_empty_num_id'\n | 'is_blank'\n | 'is_present'\n | 'is_not_false'\n | 'is_true'\n | 'is_false'\n | 'is_not_null'\n | 'is_null'\n | 'notin_with_null'\n | 'notin'\n | 'gt'\n | 'lt'\n | 'i_nlike'\n | 'nlike'\n\nexport type FilterConfig = {\n name: string\n label: string\n type: string\n operator?: FilterOperator\n options?: { [key: string]: any }\n}\n\nexport type FilterValue = {\n name: string\n operator: FilterOperator\n value: string | number | boolean | string[] | number[] | undefined\n}\n\nexport type FilterSelectRenderer = (\n filter: FilterConfig,\n value: string | number | boolean | string[] | number[] | any | undefined,\n owner: Element\n) => TemplateResult | string | void\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ox-filter-form-barcode.stories.js","sourceRoot":"","sources":["../../stories/ox-filter-form-barcode.stories.ts"],"names":[],"mappings":"AAAA,OAAO,wCAAwC,CAAA;AAE/C,OAAO,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAA;AAE1C,eAAe;IACb,KAAK,EAAE,yBAAyB;IAChC,SAAS,EAAE,yBAAyB;IACpC,QAAQ,EAAE;QACR,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;QAC5B,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;QAC9B,kBAAkB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;KAC3C;CACF,CAAA;AAcD,MAAM,QAAQ,GAAoB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAY,EAAE,EAAE,CAAC,IAAI,CAAA;;;;;;;;;;aAU/E,KAAK;eACH,OAAO;4BACM,kBAAkB;sBACxB,CAAC,CAAc,EAAE,EAAE;IACnC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;AAC1C,CAAC;;;CAGJ,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACxC,OAAO,CAAC,IAAI,GAAG;IACb,OAAO,EAAE;QACP;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,GAAG,EAAE;gBACZ,OAAO;oBACL;wBACE,OAAO,EAAE,EAAE;wBACX,KAAK,EAAE,EAAE;qBACV;oBACD;wBACE,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,KAAK;qBACb;oBACD;wBACE,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,KAAK;qBACb;iBACF,CAAA;YACH,CAAC;SACF;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,SAAS;SACpB;KACF;CACF,CAAA","sourcesContent":["import '../src/filters/ox-filters-form-base.js'\n\nimport { html, TemplateResult } from 'lit'\n\nexport default {\n title: 'ox-filters-form-barcode',\n component: 'ox-filters-form-barcode',\n argTypes: {\n value: { control: 'object' },\n filters: { control: 'object' },\n urlParamsSensitive: { control: 'boolean' }\n }\n}\n\ninterface Story<T> {\n (args: T): TemplateResult\n args?: Partial<T>\n argTypes?: Record<string, unknown>\n}\n\ninterface ArgTypes {\n value?: object\n filters?: object\n urlParamsSensitive: boolean\n}\n\nconst Template: Story<ArgTypes> = ({ value, filters, urlParamsSensitive }: ArgTypes) => html`\n <link href=\"/themes/app-theme.css\" rel=\"stylesheet\" />\n <link href=\"/themes/form-theme.css\" rel=\"stylesheet\" />\n <link href=\"https://fonts.googleapis.com/css?family=Material+Icons&display=block\" rel=\"stylesheet\" />\n <style>\n body {\n }\n </style>\n\n <ox-filters-form-base\n .value=${value}\n .filters=${filters}\n ?url-params-sensitive=${urlParamsSensitive}\n @filters-change=${(e: CustomEvent) => {\n console.log('filters changed', e.detail)\n }}\n >\n </ox-filters-form-base>\n`\n\nexport const Regular = Template.bind({})\nRegular.args = {\n filters: [\n {\n name: 'test',\n type: 'barcode',\n label: 'name',\n operator: 'eq'\n },\n {\n name: 'active',\n type: 'boolean',\n label: 'active',\n operator: 'eq'\n },\n {\n name: 'sss',\n type: 'select',\n label: 'sss',\n operator: 'eq',\n options: () => {\n return [\n {\n display: '',\n value: ''\n },\n {\n display: 'ABC',\n value: 'ABC'\n },\n {\n display: 'DEF',\n value: 'DEF'\n }\n ]\n }\n },\n {\n name: 'range',\n type: 'number',\n label: 'range',\n operator: 'between'\n },\n {\n name: 'date-range',\n type: 'datetime',\n label: 'date',\n operator: 'between'\n }\n ]\n}\n"]}
@@ -1,82 +0,0 @@
1
- import '../src/filters/ox-filters-form-base.js';
2
- import { html } from 'lit';
3
- export default {
4
- title: 'ox-filters-form-base',
5
- component: 'ox-filters-form-base',
6
- argTypes: {
7
- value: { control: 'object' },
8
- filters: { control: 'object' },
9
- urlParamsSensitive: { control: 'boolean' }
10
- }
11
- };
12
- const Template = ({ value, filters, urlParamsSensitive }) => html `
13
- <link href="/themes/app-theme.css" rel="stylesheet" />
14
- <link href="/themes/form-theme.css" rel="stylesheet" />
15
- <link href="https://fonts.googleapis.com/css?family=Material+Icons&display=block" rel="stylesheet" />
16
- <style>
17
- body {
18
- }
19
- </style>
20
-
21
- <ox-filters-form-base
22
- .value=${value}
23
- .filters=${filters}
24
- ?url-params-sensitive=${urlParamsSensitive}
25
- @filters-change=${(e) => {
26
- console.log('filters changed', e.detail);
27
- }}
28
- >
29
- </ox-filters-form-base>
30
- `;
31
- export const Regular = Template.bind({});
32
- Regular.args = {
33
- filters: [
34
- {
35
- name: 'test',
36
- type: 'string',
37
- label: 'name',
38
- operator: 'eq'
39
- },
40
- {
41
- name: 'active',
42
- type: 'boolean',
43
- label: 'active',
44
- operator: 'eq'
45
- },
46
- {
47
- name: 'sss',
48
- type: 'select',
49
- label: 'sss',
50
- operator: 'eq',
51
- options: () => {
52
- return [
53
- {
54
- display: '',
55
- value: ''
56
- },
57
- {
58
- display: 'ABC',
59
- value: 'ABC'
60
- },
61
- {
62
- display: 'DEF',
63
- value: 'DEF'
64
- }
65
- ];
66
- }
67
- },
68
- {
69
- name: 'range',
70
- type: 'number',
71
- label: 'range',
72
- operator: 'between'
73
- },
74
- {
75
- name: 'date-range',
76
- type: 'datetime',
77
- label: 'date',
78
- operator: 'between'
79
- }
80
- ]
81
- };
82
- //# sourceMappingURL=ox-filter-form-base.stories.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ox-filter-form-base.stories.js","sourceRoot":"","sources":["../../stories/ox-filter-form-base.stories.ts"],"names":[],"mappings":"AAAA,OAAO,wCAAwC,CAAA;AAE/C,OAAO,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAA;AAE1C,eAAe;IACb,KAAK,EAAE,sBAAsB;IAC7B,SAAS,EAAE,sBAAsB;IACjC,QAAQ,EAAE;QACR,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;QAC5B,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;QAC9B,kBAAkB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;KAC3C;CACF,CAAA;AAcD,MAAM,QAAQ,GAAoB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAY,EAAE,EAAE,CAAC,IAAI,CAAA;;;;;;;;;;aAU/E,KAAK;eACH,OAAO;4BACM,kBAAkB;sBACxB,CAAC,CAAc,EAAE,EAAE;IACnC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;AAC1C,CAAC;;;CAGJ,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACxC,OAAO,CAAC,IAAI,GAAG;IACb,OAAO,EAAE;QACP;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,GAAG,EAAE;gBACZ,OAAO;oBACL;wBACE,OAAO,EAAE,EAAE;wBACX,KAAK,EAAE,EAAE;qBACV;oBACD;wBACE,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,KAAK;qBACb;oBACD;wBACE,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,KAAK;qBACb;iBACF,CAAA;YACH,CAAC;SACF;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,SAAS;SACpB;KACF;CACF,CAAA","sourcesContent":["import '../src/filters/ox-filters-form-base.js'\n\nimport { html, TemplateResult } from 'lit'\n\nexport default {\n title: 'ox-filters-form-base',\n component: 'ox-filters-form-base',\n argTypes: {\n value: { control: 'object' },\n filters: { control: 'object' },\n urlParamsSensitive: { control: 'boolean' }\n }\n}\n\ninterface Story<T> {\n (args: T): TemplateResult\n args?: Partial<T>\n argTypes?: Record<string, unknown>\n}\n\ninterface ArgTypes {\n value?: object\n filters?: object\n urlParamsSensitive: boolean\n}\n\nconst Template: Story<ArgTypes> = ({ value, filters, urlParamsSensitive }: ArgTypes) => html`\n <link href=\"/themes/app-theme.css\" rel=\"stylesheet\" />\n <link href=\"/themes/form-theme.css\" rel=\"stylesheet\" />\n <link href=\"https://fonts.googleapis.com/css?family=Material+Icons&display=block\" rel=\"stylesheet\" />\n <style>\n body {\n }\n </style>\n\n <ox-filters-form-base\n .value=${value}\n .filters=${filters}\n ?url-params-sensitive=${urlParamsSensitive}\n @filters-change=${(e: CustomEvent) => {\n console.log('filters changed', e.detail)\n }}\n >\n </ox-filters-form-base>\n`\n\nexport const Regular = Template.bind({})\nRegular.args = {\n filters: [\n {\n name: 'test',\n type: 'string',\n label: 'name',\n operator: 'eq'\n },\n {\n name: 'active',\n type: 'boolean',\n label: 'active',\n operator: 'eq'\n },\n {\n name: 'sss',\n type: 'select',\n label: 'sss',\n operator: 'eq',\n options: () => {\n return [\n {\n display: '',\n value: ''\n },\n {\n display: 'ABC',\n value: 'ABC'\n },\n {\n display: 'DEF',\n value: 'DEF'\n }\n ]\n }\n },\n {\n name: 'range',\n type: 'number',\n label: 'range',\n operator: 'between'\n },\n {\n name: 'date-range',\n type: 'datetime',\n label: 'date',\n operator: 'between'\n }\n ]\n}\n"]}
@@ -1,97 +0,0 @@
1
- import '../src/filters/ox-filters-form-base.js'
2
-
3
- import { html, TemplateResult } from 'lit'
4
-
5
- export default {
6
- title: 'ox-filters-form-base',
7
- component: 'ox-filters-form-base',
8
- argTypes: {
9
- value: { control: 'object' },
10
- filters: { control: 'object' },
11
- urlParamsSensitive: { control: 'boolean' }
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
- value?: object
23
- filters?: object
24
- urlParamsSensitive: boolean
25
- }
26
-
27
- const Template: Story<ArgTypes> = ({ value, filters, urlParamsSensitive }: ArgTypes) => html`
28
- <link href="/themes/app-theme.css" rel="stylesheet" />
29
- <link href="/themes/form-theme.css" rel="stylesheet" />
30
- <link href="https://fonts.googleapis.com/css?family=Material+Icons&display=block" rel="stylesheet" />
31
- <style>
32
- body {
33
- }
34
- </style>
35
-
36
- <ox-filters-form-base
37
- .value=${value}
38
- .filters=${filters}
39
- ?url-params-sensitive=${urlParamsSensitive}
40
- @filters-change=${(e: CustomEvent) => {
41
- console.log('filters changed', e.detail)
42
- }}
43
- >
44
- </ox-filters-form-base>
45
- `
46
-
47
- export const Regular = Template.bind({})
48
- Regular.args = {
49
- filters: [
50
- {
51
- name: 'test',
52
- type: 'string',
53
- label: 'name',
54
- operator: 'eq'
55
- },
56
- {
57
- name: 'active',
58
- type: 'boolean',
59
- label: 'active',
60
- operator: 'eq'
61
- },
62
- {
63
- name: 'sss',
64
- type: 'select',
65
- label: 'sss',
66
- operator: 'eq',
67
- options: () => {
68
- return [
69
- {
70
- display: '',
71
- value: ''
72
- },
73
- {
74
- display: 'ABC',
75
- value: 'ABC'
76
- },
77
- {
78
- display: 'DEF',
79
- value: 'DEF'
80
- }
81
- ]
82
- }
83
- },
84
- {
85
- name: 'range',
86
- type: 'number',
87
- label: 'range',
88
- operator: 'between'
89
- },
90
- {
91
- name: 'date-range',
92
- type: 'datetime',
93
- label: 'date',
94
- operator: 'between'
95
- }
96
- ]
97
- }