@operato/form 2.0.0-alpha.0 → 2.0.0-alpha.23
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/CHANGELOG.md +26 -0
- package/dist/src/filters/filter-checkbox.d.ts +1 -1
- package/dist/src/filters/filter-checkbox.js +1 -1
- package/dist/src/filters/filter-checkbox.js.map +1 -1
- package/dist/src/filters/filter-input-barcode.d.ts +1 -1
- package/dist/src/filters/filter-input-barcode.js.map +1 -1
- package/dist/src/filters/filter-input.d.ts +1 -1
- package/dist/src/filters/filter-input.js.map +1 -1
- package/dist/src/filters/filter-range-date.d.ts +1 -1
- package/dist/src/filters/filter-range-date.js +14 -3
- package/dist/src/filters/filter-range-date.js.map +1 -1
- package/dist/src/filters/filter-range-number.d.ts +1 -1
- package/dist/src/filters/filter-range-number.js.map +1 -1
- package/dist/src/filters/filter-select.d.ts +1 -1
- package/dist/src/filters/filter-select.js.map +1 -1
- package/dist/src/filters/index.d.ts +1 -1
- package/dist/src/filters/index.js +1 -1
- package/dist/src/filters/index.js.map +1 -1
- package/dist/src/filters/ox-filters-form-base.d.ts +3 -2
- package/dist/src/filters/ox-filters-form-base.js +27 -15
- package/dist/src/filters/ox-filters-form-base.js.map +1 -1
- package/dist/src/filters/registry.d.ts +1 -1
- package/dist/src/filters/registry.js.map +1 -1
- package/dist/src/{filters/types.d.ts → types.d.ts} +7 -0
- package/dist/src/types.js.map +1 -0
- package/dist/stories/ox-filter-form-base.stories.d.ts +3 -2
- package/dist/stories/ox-filter-form-base.stories.js +10 -4
- package/dist/stories/ox-filter-form-base.stories.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -3
- package/src/filters/filter-checkbox.ts +2 -2
- package/src/filters/filter-input-barcode.ts +1 -1
- package/src/filters/filter-input.ts +1 -1
- package/src/filters/filter-range-date.ts +21 -6
- package/src/filters/filter-range-number.ts +1 -1
- package/src/filters/filter-select.ts +1 -1
- package/src/filters/index.ts +1 -1
- package/src/filters/ox-filters-form-base.ts +21 -6
- package/src/filters/registry.ts +1 -1
- package/src/{filters/types.ts → types.ts} +9 -0
- package/stories/ox-filter-form-base.stories.ts +15 -8
- package/dist/src/filters/types.js.map +0 -1
- /package/dist/src/{filters/types.js → types.js} +0 -0
|
@@ -7,9 +7,11 @@ 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 '
|
|
14
|
+
import { FilterConfig, FilterOperator, FilterValue } from '../types.js'
|
|
13
15
|
|
|
14
16
|
export type QueryFilterRangeValue = [from: number, to: number]
|
|
15
17
|
|
|
@@ -20,7 +22,7 @@ export type QueryFilter = {
|
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
@customElement('ox-filters-form-base')
|
|
23
|
-
export class
|
|
25
|
+
export class OxFiltersFormBase extends LitElement {
|
|
24
26
|
static styles = [
|
|
25
27
|
FilterStyles,
|
|
26
28
|
css`
|
|
@@ -53,8 +55,8 @@ export class FiltersFormBase extends LitElement {
|
|
|
53
55
|
`
|
|
54
56
|
]
|
|
55
57
|
|
|
56
|
-
@property({ type:
|
|
57
|
-
@property({ type:
|
|
58
|
+
@property({ type: Array }) value: FilterValue[] = []
|
|
59
|
+
@property({ type: Array }) filters: FilterConfig[] = []
|
|
58
60
|
@property({ type: Boolean, attribute: 'url-params-sensitive' }) urlParamsSensitive?: boolean
|
|
59
61
|
@property({ type: Boolean, attribute: 'autofocus' }) autofocus: boolean = true
|
|
60
62
|
|
|
@@ -80,6 +82,17 @@ export class FiltersFormBase extends LitElement {
|
|
|
80
82
|
})
|
|
81
83
|
}
|
|
82
84
|
|
|
85
|
+
buildDefaultValue(operator: string, defaultValue: any) {
|
|
86
|
+
if (defaultValue === undefined) {
|
|
87
|
+
return
|
|
88
|
+
}
|
|
89
|
+
if (operator == 'between') {
|
|
90
|
+
return (defaultValue as Array<any>).map(v => getDefaultValue(v, this))
|
|
91
|
+
} else {
|
|
92
|
+
return getDefaultValue(defaultValue, this)
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
83
96
|
render(): TemplateResult {
|
|
84
97
|
return html`
|
|
85
98
|
<form
|
|
@@ -88,14 +101,16 @@ export class FiltersFormBase extends LitElement {
|
|
|
88
101
|
}}
|
|
89
102
|
>
|
|
90
103
|
${this.filters.map((filter: FilterConfig) => {
|
|
91
|
-
const { name, label, type, operator } = filter
|
|
104
|
+
const { name, label, type, operator, value: defaultValue } = filter
|
|
92
105
|
const idx = operator === 'between' ? 1 : 0
|
|
93
106
|
const renderer = getFilterRenderer(
|
|
94
107
|
operator === 'like' || operator === 'i_like' || operator === 'i_nlike' || operator === 'nlike'
|
|
95
108
|
? 'text'
|
|
96
109
|
: type
|
|
97
110
|
)[idx]
|
|
98
|
-
|
|
111
|
+
|
|
112
|
+
const value =
|
|
113
|
+
this.value?.find(filter => filter.name == name)?.value ?? this.buildDefaultValue(operator!, defaultValue)
|
|
99
114
|
|
|
100
115
|
if (!renderer) {
|
|
101
116
|
return html``
|
package/src/filters/registry.ts
CHANGED
|
@@ -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 '
|
|
7
|
+
import { FilterSelectRenderer } from '../types.js'
|
|
8
8
|
|
|
9
9
|
var RENDERERS: {
|
|
10
10
|
[name: string]: FilterSelectRenderer[]
|
|
@@ -32,6 +32,15 @@ export type FilterConfig = {
|
|
|
32
32
|
type: string
|
|
33
33
|
operator?: FilterOperator
|
|
34
34
|
options?: { [key: string]: any }
|
|
35
|
+
value?:
|
|
36
|
+
| string
|
|
37
|
+
| number
|
|
38
|
+
| boolean
|
|
39
|
+
| { name: string; [params: string]: any }
|
|
40
|
+
| string[]
|
|
41
|
+
| number[]
|
|
42
|
+
| { name: string; [params: string]: any }[]
|
|
43
|
+
| undefined
|
|
35
44
|
}
|
|
36
45
|
|
|
37
46
|
export type FilterValue = {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import '../src/filters/ox-filters-form-base.js'
|
|
2
2
|
|
|
3
3
|
import { html, TemplateResult } from 'lit'
|
|
4
|
+
import { FilterConfig, FilterValue } from '../src/index.js'
|
|
4
5
|
|
|
5
6
|
export default {
|
|
6
7
|
title: 'ox-filters-form-base',
|
|
@@ -19,8 +20,8 @@ interface Story<T> {
|
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
interface ArgTypes {
|
|
22
|
-
value?:
|
|
23
|
-
filters?:
|
|
23
|
+
value?: FilterValue[]
|
|
24
|
+
filters?: FilterConfig[]
|
|
24
25
|
urlParamsSensitive: boolean
|
|
25
26
|
}
|
|
26
27
|
|
|
@@ -34,8 +35,8 @@ const Template: Story<ArgTypes> = ({ value, filters, urlParamsSensitive }: ArgTy
|
|
|
34
35
|
</style>
|
|
35
36
|
|
|
36
37
|
<ox-filters-form-base
|
|
37
|
-
.value=${value}
|
|
38
|
-
.filters=${filters}
|
|
38
|
+
.value=${value!}
|
|
39
|
+
.filters=${filters!}
|
|
39
40
|
?url-params-sensitive=${urlParamsSensitive}
|
|
40
41
|
@filters-change=${(e: CustomEvent) => {
|
|
41
42
|
console.log('filters changed', e.detail)
|
|
@@ -51,13 +52,15 @@ Regular.args = {
|
|
|
51
52
|
name: 'test',
|
|
52
53
|
type: 'string',
|
|
53
54
|
label: 'name',
|
|
54
|
-
operator: 'eq'
|
|
55
|
+
operator: 'eq',
|
|
56
|
+
value: 'No Name'
|
|
55
57
|
},
|
|
56
58
|
{
|
|
57
59
|
name: 'active',
|
|
58
60
|
type: 'boolean',
|
|
59
61
|
label: 'active',
|
|
60
|
-
operator: 'eq'
|
|
62
|
+
operator: 'eq',
|
|
63
|
+
value: true
|
|
61
64
|
},
|
|
62
65
|
{
|
|
63
66
|
name: 'sss',
|
|
@@ -89,9 +92,13 @@ Regular.args = {
|
|
|
89
92
|
},
|
|
90
93
|
{
|
|
91
94
|
name: 'date-range',
|
|
92
|
-
type: '
|
|
95
|
+
type: 'date',
|
|
93
96
|
label: 'date',
|
|
94
|
-
operator: 'between'
|
|
97
|
+
operator: 'between',
|
|
98
|
+
value: [
|
|
99
|
+
{ name: 'week', params: { relativeWeeks: -1 } },
|
|
100
|
+
{ name: 'today', params: { relativeDays: +1 } }
|
|
101
|
+
]
|
|
95
102
|
}
|
|
96
103
|
]
|
|
97
104
|
}
|
|
@@ -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"]}
|
|
File without changes
|