@operato/form 2.0.0-alpha.152 → 2.0.0-alpha.154
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 +24 -0
- package/dist/src/components/ox-search-form.d.ts +4 -1
- package/dist/src/components/ox-search-form.js +42 -8
- package/dist/src/components/ox-search-form.js.map +1 -1
- package/dist/src/filters/filter-checkbox.js +2 -1
- package/dist/src/filters/filter-checkbox.js.map +1 -1
- package/dist/src/filters/filter-input-barcode.js +3 -2
- package/dist/src/filters/filter-input-barcode.js.map +1 -1
- package/dist/src/filters/filter-input.js +2 -1
- package/dist/src/filters/filter-input.js.map +1 -1
- package/dist/src/filters/filter-range-date.js +3 -1
- package/dist/src/filters/filter-range-date.js.map +1 -1
- package/dist/src/filters/filter-range-number.js +3 -1
- package/dist/src/filters/filter-range-number.js.map +1 -1
- package/dist/src/filters/filter-styles.js +4 -0
- package/dist/src/filters/filter-styles.js.map +1 -1
- package/dist/src/filters/ox-filters-form-base.d.ts +3 -1
- package/dist/src/filters/ox-filters-form-base.js +39 -5
- package/dist/src/filters/ox-filters-form-base.js.map +1 -1
- package/dist/src/styles/search-form-styles.js +8 -2
- package/dist/src/styles/search-form-styles.js.map +1 -1
- package/dist/src/types.d.ts +2 -0
- package/dist/src/types.js.map +1 -1
- package/dist/stories/ox-search-form-change-handler.stories.js +2 -0
- package/dist/stories/ox-search-form-change-handler.stories.js.map +1 -1
- package/dist/stories/ox-search-form.stories.d.ts +6 -0
- package/dist/stories/ox-search-form.stories.js +12 -1
- package/dist/stories/ox-search-form.stories.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/src/components/ox-search-form.ts +39 -8
- package/src/filters/filter-checkbox.ts +2 -1
- package/src/filters/filter-input-barcode.ts +3 -2
- package/src/filters/filter-input.ts +2 -1
- package/src/filters/filter-range-date.ts +3 -1
- package/src/filters/filter-range-number.ts +3 -1
- package/src/filters/filter-styles.ts +4 -0
- package/src/filters/ox-filters-form-base.ts +35 -5
- package/src/styles/search-form-styles.ts +8 -2
- package/src/types.ts +2 -0
- package/stories/ox-search-form-change-handler.stories.ts +2 -0
- package/stories/ox-search-form.stories.ts +19 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,30 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [2.0.0-alpha.154](https://github.com/hatiolab/operato/compare/v2.0.0-alpha.153...v2.0.0-alpha.154) (2024-06-01)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### :rocket: New Features
|
|
10
|
+
|
|
11
|
+
* partial reset for search-form and filters-form ([b4c2bc4](https://github.com/hatiolab/operato/commit/b4c2bc4707e6e5d17f29b228b34810532c9a8aec))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## [2.0.0-alpha.153](https://github.com/hatiolab/operato/compare/v2.0.0-alpha.152...v2.0.0-alpha.153) (2024-05-31)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### :bug: Bug Fix
|
|
19
|
+
|
|
20
|
+
* readonly property for form inputs ([b814347](https://github.com/hatiolab/operato/commit/b814347e76a911488f498b5ab98ad172c2c1a961))
|
|
21
|
+
* update theme file for form module ([6bcc259](https://github.com/hatiolab/operato/commit/6bcc25933b8be42f8e15ab71cdaf0b75ca5a3a72))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### :rocket: New Features
|
|
25
|
+
|
|
26
|
+
* partial reset for search-form and filters-form ([eb02ea1](https://github.com/hatiolab/operato/commit/eb02ea169c9803eceb071eedd5be2c3a8a05fb5d))
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
6
30
|
## [2.0.0-alpha.152](https://github.com/hatiolab/operato/compare/v2.0.0-alpha.151...v2.0.0-alpha.152) (2024-05-30)
|
|
7
31
|
|
|
8
32
|
**Note:** Version bump only for package @operato/form
|
|
@@ -21,6 +21,7 @@ export declare class OxSearchForm extends LitElement {
|
|
|
21
21
|
renderObject(field: SearchFormField, autofocusConsumed: number): import("lit-html").TemplateResult<1>;
|
|
22
22
|
renderElse(field: SearchFormField, autofocusConsumed: number): import("lit-html").TemplateResult<1>;
|
|
23
23
|
updated(changes: PropertyValues<this>): Promise<void>;
|
|
24
|
+
getFieldByName(name: string): Element | null;
|
|
24
25
|
_checkInputValidity(): void;
|
|
25
26
|
get searchParams(): string;
|
|
26
27
|
get queryFilters(): {
|
|
@@ -38,6 +39,8 @@ export declare class OxSearchForm extends LitElement {
|
|
|
38
39
|
serialize(): {
|
|
39
40
|
[name: string]: any;
|
|
40
41
|
};
|
|
41
|
-
reset(
|
|
42
|
+
reset(value?: string[] | {
|
|
43
|
+
[field: string]: any;
|
|
44
|
+
}): void;
|
|
42
45
|
submit(): void;
|
|
43
46
|
}
|
|
@@ -85,7 +85,7 @@ let OxSearchForm = class OxSearchForm extends LitElement {
|
|
|
85
85
|
`;
|
|
86
86
|
}
|
|
87
87
|
renderSelect(field) {
|
|
88
|
-
var { options } = field;
|
|
88
|
+
var { id, options, readonly, label, name, value, placeholder, hidden } = field;
|
|
89
89
|
if (typeof options === 'function') {
|
|
90
90
|
options = options.call(field, this);
|
|
91
91
|
if (options instanceof Promise) {
|
|
@@ -99,12 +99,13 @@ let OxSearchForm = class OxSearchForm extends LitElement {
|
|
|
99
99
|
var optionsTemplate = buildOptions(field, (options || []));
|
|
100
100
|
}
|
|
101
101
|
return html `
|
|
102
|
-
<label ?hidden=${
|
|
102
|
+
<label ?hidden=${hidden}>${label || name || id}</label>
|
|
103
103
|
<select
|
|
104
|
-
.value=${
|
|
105
|
-
name=${ifDefined(
|
|
106
|
-
placeholder=${ifDefined(
|
|
107
|
-
?hidden=${
|
|
104
|
+
.value=${value}
|
|
105
|
+
name=${ifDefined(name)}
|
|
106
|
+
placeholder=${ifDefined(placeholder)}
|
|
107
|
+
?hidden=${hidden}
|
|
108
|
+
?readonly=${readonly}
|
|
108
109
|
>
|
|
109
110
|
${optionsTemplate}
|
|
110
111
|
</select>
|
|
@@ -118,6 +119,7 @@ let OxSearchForm = class OxSearchForm extends LitElement {
|
|
|
118
119
|
name=${ifDefined(field.name)}
|
|
119
120
|
?checked=${field.value}
|
|
120
121
|
?hidden=${field.hidden}
|
|
122
|
+
?readonly=${field.readonly}
|
|
121
123
|
@click=${(e) => {
|
|
122
124
|
const checkbox = e.currentTarget;
|
|
123
125
|
if (checkbox.hasAttribute('indeterminate')) {
|
|
@@ -153,6 +155,7 @@ let OxSearchForm = class OxSearchForm extends LitElement {
|
|
|
153
155
|
.field=${field.field}
|
|
154
156
|
.queryName=${field.queryName}
|
|
155
157
|
?hidden=${field.hidden}
|
|
158
|
+
?readonly=${field.readonly}
|
|
156
159
|
?autofocus=${!field.hidden && 0 === autofocusConsumed}
|
|
157
160
|
/>
|
|
158
161
|
`;
|
|
@@ -166,6 +169,7 @@ let OxSearchForm = class OxSearchForm extends LitElement {
|
|
|
166
169
|
name=${ifDefined(field.name)}
|
|
167
170
|
placeholder=${ifDefined(field.placeholder)}
|
|
168
171
|
?hidden=${field.hidden}
|
|
172
|
+
?readonly=${field.readonly}
|
|
169
173
|
?autofocus=${!field.hidden && 0 === autofocusConsumed++}
|
|
170
174
|
/>
|
|
171
175
|
`;
|
|
@@ -217,6 +221,9 @@ let OxSearchForm = class OxSearchForm extends LitElement {
|
|
|
217
221
|
});
|
|
218
222
|
}
|
|
219
223
|
}
|
|
224
|
+
getFieldByName(name) {
|
|
225
|
+
return this.renderRoot.querySelector(`[name=${name}]`);
|
|
226
|
+
}
|
|
220
227
|
_checkInputValidity() {
|
|
221
228
|
var _a;
|
|
222
229
|
const names = ((_a = this.fields) === null || _a === void 0 ? void 0 : _a.map(i => i.name)) || [];
|
|
@@ -330,10 +337,37 @@ let OxSearchForm = class OxSearchForm extends LitElement {
|
|
|
330
337
|
});
|
|
331
338
|
return data;
|
|
332
339
|
}
|
|
333
|
-
reset() {
|
|
340
|
+
reset(value) {
|
|
334
341
|
this.form
|
|
335
342
|
.then((form) => {
|
|
336
|
-
|
|
343
|
+
if (value) {
|
|
344
|
+
if (value instanceof Array) {
|
|
345
|
+
value
|
|
346
|
+
.filter(item => typeof item == 'string')
|
|
347
|
+
.forEach(item => {
|
|
348
|
+
const field = this.getFieldByName(item);
|
|
349
|
+
if (field) {
|
|
350
|
+
;
|
|
351
|
+
field.value = '';
|
|
352
|
+
}
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
const keys = Object.keys(value);
|
|
357
|
+
keys
|
|
358
|
+
.filter(key => typeof key == 'string')
|
|
359
|
+
.forEach(key => {
|
|
360
|
+
const field = this.getFieldByName(key);
|
|
361
|
+
if (field) {
|
|
362
|
+
;
|
|
363
|
+
field.value = value[key];
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
form.reset();
|
|
370
|
+
}
|
|
337
371
|
})
|
|
338
372
|
.catch((error) => {
|
|
339
373
|
console.error('Error resetting the form:', error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ox-search-form.js","sourceRoot":"","sources":["../../../src/components/ox-search-form.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport './ox-custom-input.js'\nimport './ox-custom-select.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement, nothing, PropertyValues } from 'lit'\nimport { customElement, property, query, queryAll, queryAsync } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { until } from 'lit/directives/until.js'\nimport { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'\n\nimport { buildArgs, client } from '@operato/graphql'\n\nimport { SearchFormStyles } from '../styles/search-form-styles.js'\nimport { SearchFormField, SelectOption, SelectOptionObject } from '../types.js'\n\nfunction buildOptions(field: SearchFormField, options: SelectOption[]) {\n const selectOptionObjects = options.map(option => {\n switch (typeof option) {\n case 'string':\n return {\n name: option,\n value: option\n }\n case 'object':\n return {\n name: option.name || option.display,\n value: option.value\n }\n default:\n return option\n }\n }) as SelectOptionObject[]\n\n return html`\n ${selectOptionObjects?.map(\n ({ value, display, name }) => html`\n <option ?selected=${value == field.value} value=${value}>${name || display}</option>\n `\n )}\n `\n}\n\n@customElement('ox-search-form')\nexport class OxSearchForm extends LitElement {\n static styles = [\n MDTypeScaleStyles,\n SearchFormStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n padding: var(--spacing-small);\n\n position: relative;\n }\n\n ::placeholder {\n text-transform: capitalize;\n color: rgba(var(--secondary-color-rgb), 0.5);\n }\n label {\n font-size: var(--md-sys-typescale-label-large-size, 0.875rem);\n color: var(--md-sys-color-primary);\n }\n select,\n input {\n border: none;\n border-bottom: var(--ox-filters-input-border, 1px solid var(--md-sys-color-outline));\n font: var(--ox-filters-input-font);\n }\n\n select:focus,\n input:focus {\n outline: none;\n border-bottom: var(--ox-filters-input-focus-border, 1px solid var(--md-ref-palette-primary50));\n color: var(--ox-filters-input-focus-color, var(--md-sys-color-primary));\n }\n `\n ]\n\n @property({ type: Array }) fields?: SearchFormField[]\n @property({ type: Boolean }) hideSearchButton: boolean = false\n @property({ type: Boolean, attribute: true }) autofocus: boolean = false\n\n @queryAsync('form') form!: HTMLFormElement\n @query('input[autofocus]') autofocused?: HTMLInputElement\n @queryAll('input, select') formFields!: ((HTMLInputElement | HTMLSelectElement) & { field: string; _value: any })[]\n\n private autoUpdateTargetsOnChange: { [name: string]: string[] } = {}\n\n render() {\n var autofocusConsumed = 0\n\n return html`\n <form\n class=\"search-form md-typescale-body-medium-prominent\"\n @change=${async (e: Event) => {\n const field = e.target as HTMLInputElement\n const name = field?.getAttribute('name')\n const value = field.value\n\n if (name && this.autoUpdateTargetsOnChange[name]) {\n ;(this.autoUpdateTargetsOnChange[name] || []).forEach(name => {\n const target = this.renderRoot.querySelector(`[name='${name}']`)\n if (target) {\n ;(target as HTMLInputElement).value = ''\n }\n })\n\n this.requestUpdate()\n }\n\n const { onchange } = this.fields?.find(field => field.name == name) || {}\n\n const keepGoing = onchange ? await onchange.call(null, value, this) : true\n\n if (keepGoing) {\n this.dispatchEvent(new CustomEvent('change', { detail: value }))\n this.submit()\n }\n }}\n >\n ${(this.fields || []).map(\n field => html`\n ${field.type === 'select'\n ? this.renderSelect(field)\n : field.type === 'checkbox'\n ? this.renderCheckbox(field)\n : field.type === 'object'\n ? this.renderObject(field, autofocusConsumed++)\n : this.renderElse(field, autofocusConsumed++)}\n `\n )}\n ${!!this.hideSearchButton\n ? nothing\n : html`<md-icon @click=${(e: MouseEvent) => this.submit()} search>search</md-icon>`}\n </form>\n `\n }\n\n renderSelect(field: SearchFormField) {\n var { options } = field\n\n if (typeof options === 'function') {\n options = (options as Function).call(field, this)\n\n if (options instanceof Promise) {\n var optionsTemplate = html`${until(options.then(options => buildOptions(field, options)))}`\n } else {\n var optionsTemplate = buildOptions(field, (options || []) as SelectOption[])\n }\n } else {\n var optionsTemplate = buildOptions(field, (options || []) as SelectOption[])\n }\n\n return html`\n <label ?hidden=${field.hidden}>${field.label || field.name || field.id}</label>\n <select\n .value=${field.value}\n name=${ifDefined(field.name)}\n placeholder=${ifDefined(field.placeholder)}\n ?hidden=${field.hidden}\n >\n ${optionsTemplate!}\n </select>\n `\n }\n\n renderCheckbox(field: SearchFormField) {\n return html`\n <input\n id=\"ckbx_${field.name}\"\n type=\"checkbox\"\n name=${ifDefined(field.name)}\n ?checked=${field.value}\n ?hidden=${field.hidden}\n @click=${(e: MouseEvent) => {\n const checkbox = e.currentTarget as HTMLInputElement & { _value: any }\n if (checkbox.hasAttribute('indeterminate')) {\n const values = [undefined, 'on', 'off']\n const currentValue = checkbox._value\n const newValue =\n values.indexOf(currentValue) + 1 > values.length - 1\n ? values[0]\n : values[values.indexOf(currentValue) + 1]\n\n if (newValue === 'on') {\n checkbox.checked = true\n } else if (newValue === 'off') {\n checkbox.checked = false\n } else {\n checkbox.indeterminate = true\n }\n checkbox._value = newValue\n }\n }}\n />\n <label for=\"ckbx_${field.name}\" ?hidden=${field.hidden}>${field.label || field.name || field.id}</label>\n `\n }\n\n renderObject(field: SearchFormField, autofocusConsumed: number) {\n return html`\n <label ?hidden=${field.hidden}>${field.label || field.name || field.id}</label>\n <input\n .type=${field.type}\n name=${ifDefined(field.name)}\n placeholder=${ifDefined(field.placeholder)}\n .value=${field.value || ''}\n .field=${field.field}\n .queryName=${field.queryName}\n ?hidden=${field.hidden}\n ?autofocus=${!field.hidden && 0 === autofocusConsumed}\n />\n `\n }\n\n renderElse(field: SearchFormField, autofocusConsumed: number) {\n return html`\n <label ?hidden=${field.hidden}>${field.label || field.name || field.id}</label>\n <input\n .type=${field.type}\n .value=${field.value || ''}\n name=${ifDefined(field.name)}\n placeholder=${ifDefined(field.placeholder)}\n ?hidden=${field.hidden}\n ?autofocus=${!field.hidden && 0 === autofocusConsumed++}\n />\n `\n }\n\n async updated(changes: PropertyValues<this>) {\n if (changes.has('fields')) {\n this._checkInputValidity()\n\n var formFields = Array.from(this.formFields)\n this.fields &&\n this.fields.forEach(field => {\n var formField = formFields.find(f => f.name == field.name)\n if (field.props instanceof Object && !Array.isArray(field.props)) {\n for (let prop in field.props) {\n if (field.props[prop]) {\n formField!.setAttribute(prop, field.props[prop])\n }\n }\n }\n\n if (field.attrs && Array.isArray(field.attrs)) {\n field.attrs.forEach(attr => {\n if (attr === 'indeterminate') {\n ;(formField as HTMLInputElement).indeterminate = true\n } else {\n formField!.setAttribute(attr, '')\n }\n })\n }\n\n if (field.handlers instanceof Object && !Array.isArray(field.handlers)) {\n for (let eventName in field.handlers) {\n formField!.addEventListener(eventName, field.handlers[eventName])\n }\n }\n })\n\n if (this.autofocus) {\n await this.requestUpdate()\n this.autofocused?.focus()\n }\n\n this.autoUpdateTargetsOnChange = {}\n this.fields\n ?.filter(filter => filter.boundTo && filter.boundTo.length > 0)\n .map(({ name, boundTo }) => {\n boundTo!.forEach(to => {\n const origin = this.autoUpdateTargetsOnChange[to] || []\n if (name && !origin.includes(name)) {\n this.autoUpdateTargetsOnChange[to] = [...origin, name]\n }\n })\n })\n }\n }\n\n _checkInputValidity() {\n const names = this.fields?.map(i => i.name) || []\n const result = names.every(name => {\n return names.indexOf(name) === names.lastIndexOf(name)\n })\n if (!result) {\n throw new Error('Field name is duplicated.')\n }\n }\n\n get searchParams() {\n let searchParam = new URLSearchParams()\n const fields = Array.from(this.formFields)\n fields.forEach(field => searchParam.append(field.name, field.value))\n\n return decodeURI(searchParam.toString())\n }\n\n get queryFilters() {\n return Array.from(this.formFields)\n .filter(\n field =>\n (field.type !== 'checkbox' && field.value && field.value !== '') ||\n (field.type === 'checkbox' && !field.hasAttribute('indeterminate')) ||\n (field.type === 'checkbox' && field.hasAttribute('indeterminate') && field._value)\n )\n .map(field => {\n const operator = field.getAttribute('searchOper') || ''\n let value = operator.indexOf('like') >= 0 ? `%${field.value}%` : field.value\n return {\n name: field.name,\n value:\n field.type === 'text'\n ? value\n : field.type === 'checkbox'\n ? field.hasAttribute('indeterminate')\n ? field._value === 'on'\n ? true\n : false\n : (field as HTMLInputElement).checked\n : field.type === 'number'\n ? parseFloat(value)\n : value,\n operator\n }\n })\n }\n\n public async getQueryFilters() {\n return await Promise.all(\n Array.from(this.formFields)\n .filter(\n field =>\n (field.type !== 'checkbox' && field.value && field.value !== '') ||\n (field.type === 'checkbox' && !field.hasAttribute('indeterminate')) ||\n (field.type === 'checkbox' && field.hasAttribute('indeterminate') && field._value)\n )\n .map(async field => {\n const name = field.name\n const operator = (field.type === 'text' && field.field ? 'in' : field.getAttribute('searchOper')) || ''\n const value = operator.indexOf('like') >= 0 ? `%${field.value}%` : field.value\n const filter = {\n name,\n operator,\n value:\n field.type === 'text' && field.getAttribute('type') === 'object'\n ? await this._getResourceIds(field)\n : field.type === 'text'\n ? value\n : field.type === 'checkbox'\n ? field.hasAttribute('indeterminate')\n ? field._value === 'on'\n ? true\n : false\n : (field as HTMLInputElement).checked\n : field.type === 'number'\n ? parseFloat(value)\n : value,\n relation: field.type === 'text' && field.getAttribute('type') === 'object'\n }\n return filter\n })\n )\n }\n\n private async _getResourceIds(inputField: HTMLInputElement | HTMLSelectElement) {\n const {\n field = 'name',\n value,\n queryName\n } = inputField as (HTMLInputElement | HTMLSelectElement) & { field: string; queryName: string }\n\n const response = await client.query({\n query: gql`\n query {\n fetch: ${queryName}(${buildArgs({\n filters: [\n {\n name: field,\n operator: 'i_like',\n value: `%${value}%`\n }\n ]\n })}) {\n items {\n id\n }\n }\n }\n `\n })\n\n if (!response.errors) {\n const items = response.data.fetch.items as { id: string }[]\n return (items && items.map(item => item.id)) || []\n }\n }\n\n serialize() {\n let data: { [name: string]: any } = {}\n\n Array.from(this.formFields).forEach(field => {\n const name = field.name\n if (field.type === 'number') {\n data[name] = parseFloat(field.value)\n } else if (field.type === 'checkbox') {\n data[name] = (field as HTMLInputElement).checked\n } else {\n data[name] = field.value\n }\n })\n\n return data\n }\n\n reset() {\n this.form\n .then((form: HTMLFormElement) => {\n form.reset()\n })\n .catch((error: any) => {\n console.error('Error resetting the form:', error)\n })\n }\n\n submit() {\n this.dispatchEvent(new CustomEvent('submit'))\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ox-search-form.js","sourceRoot":"","sources":["../../../src/components/ox-search-form.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport './ox-custom-input.js'\nimport './ox-custom-select.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement, nothing, PropertyValues } from 'lit'\nimport { customElement, property, query, queryAll, queryAsync } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { until } from 'lit/directives/until.js'\nimport { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'\n\nimport { buildArgs, client } from '@operato/graphql'\n\nimport { SearchFormStyles } from '../styles/search-form-styles.js'\nimport { SearchFormField, SelectOption, SelectOptionObject } from '../types.js'\n\nfunction buildOptions(field: SearchFormField, options: SelectOption[]) {\n const selectOptionObjects = options.map(option => {\n switch (typeof option) {\n case 'string':\n return {\n name: option,\n value: option\n }\n case 'object':\n return {\n name: option.name || option.display,\n value: option.value\n }\n default:\n return option\n }\n }) as SelectOptionObject[]\n\n return html`\n ${selectOptionObjects?.map(\n ({ value, display, name }) => html`\n <option ?selected=${value == field.value} value=${value}>${name || display}</option>\n `\n )}\n `\n}\n\n@customElement('ox-search-form')\nexport class OxSearchForm extends LitElement {\n static styles = [\n MDTypeScaleStyles,\n SearchFormStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n padding: var(--spacing-small);\n\n position: relative;\n }\n\n ::placeholder {\n text-transform: capitalize;\n color: rgba(var(--secondary-color-rgb), 0.5);\n }\n label {\n font-size: var(--md-sys-typescale-label-large-size, 0.875rem);\n color: var(--md-sys-color-primary);\n }\n select,\n input {\n border: none;\n border-bottom: var(--ox-filters-input-border, 1px solid var(--md-sys-color-outline));\n font: var(--ox-filters-input-font);\n }\n\n select:focus,\n input:focus {\n outline: none;\n border-bottom: var(--ox-filters-input-focus-border, 1px solid var(--md-ref-palette-primary50));\n color: var(--ox-filters-input-focus-color, var(--md-sys-color-primary));\n }\n `\n ]\n\n @property({ type: Array }) fields?: SearchFormField[]\n @property({ type: Boolean }) hideSearchButton: boolean = false\n @property({ type: Boolean, attribute: true }) autofocus: boolean = false\n\n @queryAsync('form') form!: HTMLFormElement\n @query('input[autofocus]') autofocused?: HTMLInputElement\n @queryAll('input, select') formFields!: ((HTMLInputElement | HTMLSelectElement) & { field: string; _value: any })[]\n\n private autoUpdateTargetsOnChange: { [name: string]: string[] } = {}\n\n render() {\n var autofocusConsumed = 0\n\n return html`\n <form\n class=\"search-form md-typescale-body-medium-prominent\"\n @change=${async (e: Event) => {\n const field = e.target as HTMLInputElement\n const name = field?.getAttribute('name')\n const value = field.value\n\n if (name && this.autoUpdateTargetsOnChange[name]) {\n ;(this.autoUpdateTargetsOnChange[name] || []).forEach(name => {\n const target = this.renderRoot.querySelector(`[name='${name}']`)\n if (target) {\n ;(target as HTMLInputElement).value = ''\n }\n })\n\n this.requestUpdate()\n }\n\n const { onchange } = this.fields?.find(field => field.name == name) || {}\n\n const keepGoing = onchange ? await onchange.call(null, value, this) : true\n\n if (keepGoing) {\n this.dispatchEvent(new CustomEvent('change', { detail: value }))\n this.submit()\n }\n }}\n >\n ${(this.fields || []).map(\n field => html`\n ${field.type === 'select'\n ? this.renderSelect(field)\n : field.type === 'checkbox'\n ? this.renderCheckbox(field)\n : field.type === 'object'\n ? this.renderObject(field, autofocusConsumed++)\n : this.renderElse(field, autofocusConsumed++)}\n `\n )}\n ${!!this.hideSearchButton\n ? nothing\n : html`<md-icon @click=${(e: MouseEvent) => this.submit()} search>search</md-icon>`}\n </form>\n `\n }\n\n renderSelect(field: SearchFormField) {\n var { id, options, readonly, label, name, value, placeholder, hidden } = field\n\n if (typeof options === 'function') {\n options = (options as Function).call(field, this)\n\n if (options instanceof Promise) {\n var optionsTemplate = html`${until(options.then(options => buildOptions(field, options)))}`\n } else {\n var optionsTemplate = buildOptions(field, (options || []) as SelectOption[])\n }\n } else {\n var optionsTemplate = buildOptions(field, (options || []) as SelectOption[])\n }\n\n return html`\n <label ?hidden=${hidden}>${label || name || id}</label>\n <select\n .value=${value}\n name=${ifDefined(name)}\n placeholder=${ifDefined(placeholder)}\n ?hidden=${hidden}\n ?readonly=${readonly}\n >\n ${optionsTemplate!}\n </select>\n `\n }\n\n renderCheckbox(field: SearchFormField) {\n return html`\n <input\n id=\"ckbx_${field.name}\"\n type=\"checkbox\"\n name=${ifDefined(field.name)}\n ?checked=${field.value}\n ?hidden=${field.hidden}\n ?readonly=${field.readonly}\n @click=${(e: MouseEvent) => {\n const checkbox = e.currentTarget as HTMLInputElement & { _value: any }\n if (checkbox.hasAttribute('indeterminate')) {\n const values = [undefined, 'on', 'off']\n const currentValue = checkbox._value\n const newValue =\n values.indexOf(currentValue) + 1 > values.length - 1\n ? values[0]\n : values[values.indexOf(currentValue) + 1]\n\n if (newValue === 'on') {\n checkbox.checked = true\n } else if (newValue === 'off') {\n checkbox.checked = false\n } else {\n checkbox.indeterminate = true\n }\n checkbox._value = newValue\n }\n }}\n />\n <label for=\"ckbx_${field.name}\" ?hidden=${field.hidden}>${field.label || field.name || field.id}</label>\n `\n }\n\n renderObject(field: SearchFormField, autofocusConsumed: number) {\n return html`\n <label ?hidden=${field.hidden}>${field.label || field.name || field.id}</label>\n <input\n .type=${field.type}\n name=${ifDefined(field.name)}\n placeholder=${ifDefined(field.placeholder)}\n .value=${field.value || ''}\n .field=${field.field}\n .queryName=${field.queryName}\n ?hidden=${field.hidden}\n ?readonly=${field.readonly}\n ?autofocus=${!field.hidden && 0 === autofocusConsumed}\n />\n `\n }\n\n renderElse(field: SearchFormField, autofocusConsumed: number) {\n return html`\n <label ?hidden=${field.hidden}>${field.label || field.name || field.id}</label>\n <input\n .type=${field.type}\n .value=${field.value || ''}\n name=${ifDefined(field.name)}\n placeholder=${ifDefined(field.placeholder)}\n ?hidden=${field.hidden}\n ?readonly=${field.readonly}\n ?autofocus=${!field.hidden && 0 === autofocusConsumed++}\n />\n `\n }\n\n async updated(changes: PropertyValues<this>) {\n if (changes.has('fields')) {\n this._checkInputValidity()\n\n var formFields = Array.from(this.formFields)\n this.fields &&\n this.fields.forEach(field => {\n var formField = formFields.find(f => f.name == field.name)\n if (field.props instanceof Object && !Array.isArray(field.props)) {\n for (let prop in field.props) {\n if (field.props[prop]) {\n formField!.setAttribute(prop, field.props[prop])\n }\n }\n }\n\n if (field.attrs && Array.isArray(field.attrs)) {\n field.attrs.forEach(attr => {\n if (attr === 'indeterminate') {\n ;(formField as HTMLInputElement).indeterminate = true\n } else {\n formField!.setAttribute(attr, '')\n }\n })\n }\n\n if (field.handlers instanceof Object && !Array.isArray(field.handlers)) {\n for (let eventName in field.handlers) {\n formField!.addEventListener(eventName, field.handlers[eventName])\n }\n }\n })\n\n if (this.autofocus) {\n await this.requestUpdate()\n this.autofocused?.focus()\n }\n\n this.autoUpdateTargetsOnChange = {}\n this.fields\n ?.filter(filter => filter.boundTo && filter.boundTo.length > 0)\n .map(({ name, boundTo }) => {\n boundTo!.forEach(to => {\n const origin = this.autoUpdateTargetsOnChange[to] || []\n if (name && !origin.includes(name)) {\n this.autoUpdateTargetsOnChange[to] = [...origin, name]\n }\n })\n })\n }\n }\n\n getFieldByName(name: string) {\n return this.renderRoot.querySelector(`[name=${name}]`)\n }\n\n _checkInputValidity() {\n const names = this.fields?.map(i => i.name) || []\n const result = names.every(name => {\n return names.indexOf(name) === names.lastIndexOf(name)\n })\n if (!result) {\n throw new Error('Field name is duplicated.')\n }\n }\n\n get searchParams() {\n let searchParam = new URLSearchParams()\n const fields = Array.from(this.formFields)\n fields.forEach(field => searchParam.append(field.name, field.value))\n\n return decodeURI(searchParam.toString())\n }\n\n get queryFilters() {\n return Array.from(this.formFields)\n .filter(\n field =>\n (field.type !== 'checkbox' && field.value && field.value !== '') ||\n (field.type === 'checkbox' && !field.hasAttribute('indeterminate')) ||\n (field.type === 'checkbox' && field.hasAttribute('indeterminate') && field._value)\n )\n .map(field => {\n const operator = field.getAttribute('searchOper') || ''\n let value = operator.indexOf('like') >= 0 ? `%${field.value}%` : field.value\n return {\n name: field.name,\n value:\n field.type === 'text'\n ? value\n : field.type === 'checkbox'\n ? field.hasAttribute('indeterminate')\n ? field._value === 'on'\n ? true\n : false\n : (field as HTMLInputElement).checked\n : field.type === 'number'\n ? parseFloat(value)\n : value,\n operator\n }\n })\n }\n\n public async getQueryFilters() {\n return await Promise.all(\n Array.from(this.formFields)\n .filter(\n field =>\n (field.type !== 'checkbox' && field.value && field.value !== '') ||\n (field.type === 'checkbox' && !field.hasAttribute('indeterminate')) ||\n (field.type === 'checkbox' && field.hasAttribute('indeterminate') && field._value)\n )\n .map(async field => {\n const name = field.name\n const operator = (field.type === 'text' && field.field ? 'in' : field.getAttribute('searchOper')) || ''\n const value = operator.indexOf('like') >= 0 ? `%${field.value}%` : field.value\n const filter = {\n name,\n operator,\n value:\n field.type === 'text' && field.getAttribute('type') === 'object'\n ? await this._getResourceIds(field)\n : field.type === 'text'\n ? value\n : field.type === 'checkbox'\n ? field.hasAttribute('indeterminate')\n ? field._value === 'on'\n ? true\n : false\n : (field as HTMLInputElement).checked\n : field.type === 'number'\n ? parseFloat(value)\n : value,\n relation: field.type === 'text' && field.getAttribute('type') === 'object'\n }\n return filter\n })\n )\n }\n\n private async _getResourceIds(inputField: HTMLInputElement | HTMLSelectElement) {\n const {\n field = 'name',\n value,\n queryName\n } = inputField as (HTMLInputElement | HTMLSelectElement) & { field: string; queryName: string }\n\n const response = await client.query({\n query: gql`\n query {\n fetch: ${queryName}(${buildArgs({\n filters: [\n {\n name: field,\n operator: 'i_like',\n value: `%${value}%`\n }\n ]\n })}) {\n items {\n id\n }\n }\n }\n `\n })\n\n if (!response.errors) {\n const items = response.data.fetch.items as { id: string }[]\n return (items && items.map(item => item.id)) || []\n }\n }\n\n serialize() {\n let data: { [name: string]: any } = {}\n\n Array.from(this.formFields).forEach(field => {\n const name = field.name\n if (field.type === 'number') {\n data[name] = parseFloat(field.value)\n } else if (field.type === 'checkbox') {\n data[name] = (field as HTMLInputElement).checked\n } else {\n data[name] = field.value\n }\n })\n\n return data\n }\n\n reset(value?: string[] | { [field: string]: any }) {\n this.form\n .then((form: HTMLFormElement) => {\n if (value) {\n if (value instanceof Array) {\n value\n .filter(item => typeof item == 'string')\n .forEach(item => {\n const field = this.getFieldByName(item)\n if (field) {\n ;(field as HTMLInputElement).value = ''\n }\n })\n } else {\n const keys = Object.keys(value)\n keys\n .filter(key => typeof key == 'string')\n .forEach(key => {\n const field = this.getFieldByName(key)\n if (field) {\n ;(field as HTMLInputElement).value = value[key]\n }\n })\n }\n } else {\n form.reset()\n }\n })\n .catch((error: any) => {\n console.error('Error resetting the form:', error)\n })\n }\n\n submit() {\n this.dispatchEvent(new CustomEvent('submit'))\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import '@operato/input/ox-checkbox.js';
|
|
2
2
|
import { html } from 'lit-html';
|
|
3
3
|
export const FilterCheckbox = (filter, value, owner) => {
|
|
4
|
-
const { name, label } = filter;
|
|
4
|
+
const { name, label, readonly } = filter;
|
|
5
5
|
return html `
|
|
6
6
|
<ox-checkbox
|
|
7
7
|
name=${name}
|
|
@@ -21,6 +21,7 @@ export const FilterCheckbox = (filter, value, owner) => {
|
|
|
21
21
|
}
|
|
22
22
|
}));
|
|
23
23
|
}}
|
|
24
|
+
?readonly=${readonly}
|
|
24
25
|
><label><span>${label}</span></label></ox-checkbox
|
|
25
26
|
>
|
|
26
27
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-checkbox.js","sourceRoot":"","sources":["../../../src/filters/filter-checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,+BAA+B,CAAA;AAEtC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAI/B,MAAM,CAAC,MAAM,cAAc,GAAyB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAC3E,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"filter-checkbox.js","sourceRoot":"","sources":["../../../src/filters/filter-checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,+BAA+B,CAAA;AAEtC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAI/B,MAAM,CAAC,MAAM,cAAc,GAAyB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAC3E,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;IAExC,OAAO,IAAI,CAAA;;aAEA,IAAI;iBACA,KAAK;;uBAEC,KAAK,KAAK,SAAS;;gBAE1B,CAAC,CAAc,EAAE,EAAE;QAC3B,CAAC;QAAC,CAAC,CAAC,MAAsB,CAAC,aAAa,CACtC,IAAI,WAAW,CAAC,eAAe,EAAE;YAC/B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK,EAAG,CAAC,CAAC,MAAqD,CAAC,OAAO;aACxE;SACF,CAAC,CACH,CAAA;IACH,CAAC;kBACW,QAAQ;sBACJ,KAAK;;GAExB,CAAA;AACH,CAAC,CAAA","sourcesContent":["import '@operato/input/ox-checkbox.js'\n\nimport { html } from 'lit-html'\n\nimport { FilterSelectRenderer } from '../types.js'\n\nexport const FilterCheckbox: FilterSelectRenderer = (filter, value, owner) => {\n const { name, label, readonly } = filter\n\n return html`\n <ox-checkbox\n name=${name}\n ?checked=${value}\n indeterminatable\n ?indeterminate=${value === undefined}\n left-label\n @change=${(e: CustomEvent) => {\n ;(e.target as HTMLElement).dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name: name,\n operator: filter.operator,\n value: (e.target as Element & { checked: boolean | undefined }).checked\n }\n })\n )\n }}\n ?readonly=${readonly}\n ><label><span>${label}</span></label></ox-checkbox\n >\n `\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import '@operato/input/ox-input-barcode.js';
|
|
2
2
|
import { html } from 'lit-html';
|
|
3
3
|
export const FilterInputBarcode = (filter, value, owner) => {
|
|
4
|
-
const { name,
|
|
4
|
+
const { name, readonly, options } = filter;
|
|
5
5
|
const { englishOnly, selectAfterChange } = (options || {});
|
|
6
6
|
return html `
|
|
7
7
|
<ox-input-barcode
|
|
@@ -22,7 +22,8 @@ export const FilterInputBarcode = (filter, value, owner) => {
|
|
|
22
22
|
}));
|
|
23
23
|
}}
|
|
24
24
|
filter-input
|
|
25
|
-
|
|
25
|
+
?readonly=${readonly}
|
|
26
|
+
></ox-input-barcode>
|
|
26
27
|
`;
|
|
27
28
|
};
|
|
28
29
|
//# sourceMappingURL=filter-input-barcode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-input-barcode.js","sourceRoot":"","sources":["../../../src/filters/filter-input-barcode.ts"],"names":[],"mappings":"AAAA,OAAO,oCAAoC,CAAA;AAE3C,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAI/B,MAAM,CAAC,MAAM,kBAAkB,GAAyB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAC/E,MAAM,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"filter-input-barcode.js","sourceRoot":"","sources":["../../../src/filters/filter-input-barcode.ts"],"names":[],"mappings":"AAAA,OAAO,oCAAoC,CAAA;AAE3C,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAI/B,MAAM,CAAC,MAAM,kBAAkB,GAAyB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAC/E,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAC1C,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAA2B,CAAA;IAEpF,OAAO,IAAI,CAAA;;aAEA,IAAI;sBACK,WAAW;6BACJ,iBAAiB;eAC/B,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;gBAC/B,CAAC,CAAc,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,MAA0B,CAAA;QAC1C,KAAK,CAAC,aAAa,CACjB,IAAI,WAAW,CAAC,eAAe,EAAE;YAC/B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACN,IAAI;gBACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB;SACF,CAAC,CACH,CAAA;IACH,CAAC;;kBAEW,QAAQ;;GAEvB,CAAA;AACH,CAAC,CAAA","sourcesContent":["import '@operato/input/ox-input-barcode.js'\n\nimport { html } from 'lit-html'\n\nimport { FilterSelectRenderer } from '../types.js'\n\nexport const FilterInputBarcode: FilterSelectRenderer = (filter, value, owner) => {\n const { name, readonly, options } = filter\n const { englishOnly, selectAfterChange } = (options || {}) as { [key: string]: any }\n\n return html`\n <ox-input-barcode\n name=${name}\n ?english-only=${englishOnly}\n ?select-after-change=${selectAfterChange}\n .value=${value === undefined ? '' : value}\n @change=${(e: CustomEvent) => {\n const input = e.target as HTMLInputElement\n input.dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name,\n operator: filter.operator,\n value: input.value\n }\n })\n )\n }}\n filter-input\n ?readonly=${readonly}\n ></ox-input-barcode>\n `\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { html } from 'lit-html';
|
|
2
2
|
export const FilterInput = (filter, value, owner) => {
|
|
3
|
-
const { name, type } = filter;
|
|
3
|
+
const { name, type, readonly } = filter;
|
|
4
4
|
return html `
|
|
5
5
|
<input
|
|
6
6
|
type=${type}
|
|
@@ -18,6 +18,7 @@ export const FilterInput = (filter, value, owner) => {
|
|
|
18
18
|
}
|
|
19
19
|
}));
|
|
20
20
|
}}
|
|
21
|
+
?readonly=${readonly}
|
|
21
22
|
/>
|
|
22
23
|
`;
|
|
23
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-input.js","sourceRoot":"","sources":["../../../src/filters/filter-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAI/B,MAAM,CAAC,MAAM,WAAW,GAAyB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IACxE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"filter-input.js","sourceRoot":"","sources":["../../../src/filters/filter-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAI/B,MAAM,CAAC,MAAM,WAAW,GAAyB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IACxE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;IAEvC,OAAO,IAAI,CAAA;;aAEA,IAAI;aACJ,IAAI;eACF,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;gBAC/B,CAAC,CAAc,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,MAA0B,CAAA;QAC1C,KAAK,CAAC,aAAa,CACjB,IAAI,WAAW,CAAC,eAAe,EAAE;YAC/B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB;SACF,CAAC,CACH,CAAA;IACH,CAAC;kBACW,QAAQ;;GAEvB,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { html } from 'lit-html'\n\nimport { FilterSelectRenderer } from '../types.js'\n\nexport const FilterInput: FilterSelectRenderer = (filter, value, owner) => {\n const { name, type, readonly } = filter\n\n return html`\n <input\n type=${type}\n name=${name}\n .value=${value === undefined ? '' : value}\n @change=${(e: CustomEvent) => {\n const input = e.target as HTMLInputElement\n input.dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name: name,\n operator: filter.operator,\n value: input.value\n }\n })\n )\n }}\n ?readonly=${readonly}\n />\n `\n}\n"]}
|
|
@@ -9,7 +9,7 @@ function formatDate(type, date) {
|
|
|
9
9
|
return type == 'date' ? formatDate : formatDate + 'T' + hours + ':' + minutes;
|
|
10
10
|
}
|
|
11
11
|
export const FilterRangeDate = (filter, value, owner) => {
|
|
12
|
-
var { name, type, operator } = filter;
|
|
12
|
+
var { name, type, operator, readonly } = filter;
|
|
13
13
|
var [from, to] = value instanceof Array ? value : [];
|
|
14
14
|
if (type === 'datetime') {
|
|
15
15
|
type = 'datetime-local';
|
|
@@ -37,6 +37,7 @@ export const FilterRangeDate = (filter, value, owner) => {
|
|
|
37
37
|
}
|
|
38
38
|
}));
|
|
39
39
|
}}
|
|
40
|
+
?readonly=${readonly}
|
|
40
41
|
/>
|
|
41
42
|
~
|
|
42
43
|
<input
|
|
@@ -59,6 +60,7 @@ export const FilterRangeDate = (filter, value, owner) => {
|
|
|
59
60
|
}
|
|
60
61
|
}));
|
|
61
62
|
}}
|
|
63
|
+
?readonly=${readonly}
|
|
62
64
|
/>
|
|
63
65
|
`;
|
|
64
66
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-range-date.js","sourceRoot":"","sources":["../../../src/filters/filter-range-date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAI/B,SAAS,UAAU,CAAC,IAAY,EAAE,IAAU;IAC1C,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IAC7B,IAAI,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACnD,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1C,IAAI,KAAK,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7C,IAAI,OAAO,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAEjD,IAAI,UAAU,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,CAAA;IAE/C,OAAO,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,OAAO,CAAA;AAC/E,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAyB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"filter-range-date.js","sourceRoot":"","sources":["../../../src/filters/filter-range-date.ts"],"names":[],"mappings":"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","sourcesContent":["import { html } from 'lit-html'\n\nimport { FilterSelectRenderer } from '../types.js'\n\nfunction formatDate(type: string, date: Date) {\n var year = date.getFullYear()\n var month = ('0' + (date.getMonth() + 1)).slice(-2)\n var day = ('0' + date.getDate()).slice(-2)\n var hours = ('0' + date.getHours()).slice(-2)\n var minutes = ('0' + date.getMinutes()).slice(-2)\n\n var formatDate = year + '-' + month + '-' + day\n\n return type == 'date' ? formatDate : formatDate + 'T' + hours + ':' + minutes\n}\n\nexport const FilterRangeDate: FilterSelectRenderer = (filter, value, owner) => {\n var { name, type, operator, readonly } = filter\n var [from, to] = value instanceof Array ? value : []\n\n if (type === 'datetime') {\n type = 'datetime-local'\n }\n\n from = formatDate(type, new Date(from))\n to = formatDate(type, new Date(to))\n\n return html`\n <input\n name=${name}\n type=${type as 'date' | 'datetime-local'}\n value=${from}\n from\n @keyup=${(e: KeyboardEvent) => {\n if (e.key !== 'Enter') {\n return\n }\n ;(e.target as HTMLElement).dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name,\n operator,\n value: Array.from(\n (e.target as HTMLElement).parentElement!.querySelectorAll('input[from], input[to]')\n ).map(input => (input as HTMLInputElement).value)\n }\n })\n )\n }}\n ?readonly=${readonly}\n />\n ~\n <input\n name=${name}\n type=${type as 'date' | 'datetime-local'}\n value=${to}\n to\n @keyup=${(e: KeyboardEvent) => {\n if (e.key !== 'Enter') {\n return\n }\n ;(e.target as HTMLElement).dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name,\n operator,\n value: Array.from(\n (e.target as HTMLElement).parentElement!.querySelectorAll('input[from], input[to]')\n ).map(input => (input as HTMLInputElement).value)\n }\n })\n )\n }}\n ?readonly=${readonly}\n />\n `\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { html } from 'lit-html';
|
|
2
2
|
export const FilterRangeNumber = (filter, value, owner) => {
|
|
3
|
-
const { name, operator } = filter;
|
|
3
|
+
const { name, operator, readonly } = filter;
|
|
4
4
|
const [from, to] = value instanceof Array ? value : [];
|
|
5
5
|
return html `
|
|
6
6
|
<input
|
|
@@ -24,6 +24,7 @@ export const FilterRangeNumber = (filter, value, owner) => {
|
|
|
24
24
|
}
|
|
25
25
|
}));
|
|
26
26
|
}}
|
|
27
|
+
?readonly=${readonly}
|
|
27
28
|
/>
|
|
28
29
|
~
|
|
29
30
|
<input
|
|
@@ -47,6 +48,7 @@ export const FilterRangeNumber = (filter, value, owner) => {
|
|
|
47
48
|
}
|
|
48
49
|
}));
|
|
49
50
|
}}
|
|
51
|
+
?readonly=${readonly}
|
|
50
52
|
/>
|
|
51
53
|
`;
|
|
52
54
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-range-number.js","sourceRoot":"","sources":["../../../src/filters/filter-range-number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAI/B,MAAM,CAAC,MAAM,iBAAiB,GAAyB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAC9E,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"filter-range-number.js","sourceRoot":"","sources":["../../../src/filters/filter-range-number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAI/B,MAAM,CAAC,MAAM,iBAAiB,GAAyB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAC9E,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;IAC3C,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAEtD,OAAO,IAAI,CAAA;;aAEA,IAAI;;;eAGF,IAAI;;eAEJ,CAAC,CAAgB,EAAE,EAAE;QAC5B,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YACtB,OAAM;QACR,CAAC;QACD,CAAC;QAAC,CAAC,CAAC,MAAsB,CAAC,aAAa,CACtC,IAAI,WAAW,CAAC,eAAe,EAAE;YAC/B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACN,IAAI;gBACJ,QAAQ;gBACR,KAAK,EAAE,KAAK,CAAC,IAAI,CACd,CAAC,CAAC,MAAsB,CAAC,aAAc,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CACpF,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAE,KAA0B,CAAC,KAAK,CAAC;aAClD;SACF,CAAC,CACH,CAAA;IACH,CAAC;kBACW,QAAQ;;;;aAIb,IAAI;;;eAGF,EAAE;;eAEF,CAAC,CAAgB,EAAE,EAAE;QAC5B,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YACtB,OAAM;QACR,CAAC;QACD,CAAC;QAAC,CAAC,CAAC,MAAsB,CAAC,aAAa,CACtC,IAAI,WAAW,CAAC,eAAe,EAAE;YAC/B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACN,IAAI;gBACJ,QAAQ;gBACR,KAAK,EAAE,KAAK,CAAC,IAAI,CACd,CAAC,CAAC,MAAsB,CAAC,aAAc,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CACpF,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAE,KAA0B,CAAC,KAAK,CAAC;aAClD;SACF,CAAC,CACH,CAAA;IACH,CAAC;kBACW,QAAQ;;GAEvB,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { html } from 'lit-html'\n\nimport { FilterSelectRenderer } from '../types.js'\n\nexport const FilterRangeNumber: FilterSelectRenderer = (filter, value, owner) => {\n const { name, operator, readonly } = filter\n const [from, to] = value instanceof Array ? value : []\n\n return html`\n <input\n name=${name}\n type=\"number\"\n placeholder=\"minimum\"\n .value=${from}\n from\n @keyup=${(e: KeyboardEvent) => {\n if (e.key !== 'Enter') {\n return\n }\n ;(e.target as HTMLElement).dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name,\n operator,\n value: Array.from(\n (e.target as HTMLElement).parentElement!.querySelectorAll('input[from], input[to]')\n ).map(input => (input as HTMLInputElement).value)\n }\n })\n )\n }}\n ?readonly=${readonly}\n />\n ~\n <input\n name=${name}\n type=\"number\"\n placeholder=\"maximum\"\n .value=${to}\n to\n @keyup=${(e: KeyboardEvent) => {\n if (e.key !== 'Enter') {\n return\n }\n ;(e.target as HTMLElement).dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name,\n operator,\n value: Array.from(\n (e.target as HTMLElement).parentElement!.querySelectorAll('input[from], input[to]')\n ).map(input => (input as HTMLInputElement).value)\n }\n })\n )\n }}\n ?readonly=${readonly}\n />\n `\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-styles.js","sourceRoot":"","sources":["../../../src/filters/filter-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"filter-styles.js","sourceRoot":"","sources":["../../../src/filters/filter-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2H9B,CAAA","sourcesContent":["import { css } from 'lit'\n\nexport const FilterStyles = css`\n :host {\n --ox-filters-input-placeholder-color: var(--input-placeholder-color, var(--md-sys-color-on-surface-variant));\n\n --ox-filters-input-border: var(--input-border, 1px solid var(--md-sys-color-outline));\n --ox-filters-input-focus-border: var(--input-focus-border, 1px solid var(--md-ref-palette-primary50));\n --ox-filters-input-font: var(--input-font, normal 14px var(--theme-font));\n --ox-filters-input-color: var(--input-color, var(--md-sys-color-on-surface));\n --ox-filters-input-focus-color: var(--input-focus-color, var(--md-sys-color-on-surface-variant));\n --ox-filters-label-font: var(--label-font, normal 14px var(--theme-font));\n --ox-filters-label-color: var(--label-color, var(--md-sys-color-on-surface));\n --ox-filters-input-background-color: transparent;\n\n --ox-filters-form-gap: var(--input-gap-vertical, 8px) var(--input-gap-horizontal, 16px);\n --ox-filters-input-padding: 0 var(--spacing-small);\n\n --ox-select-padding: var(--ox-filters-input-padding);\n --ox-checkbox-background-color: var(--ox-filters-input-background-color, transparent);\n\n --md-sys-color-on-primary: transparent;\n --form-element-height-medium: var(--form-element-height-small);\n }\n\n label {\n font-size: var(--md-sys-typescale-label-large-size, 0.875rem);\n color: var(--md-sys-color-primary);\n }\n\n span {\n text-transform: capitalize;\n }\n\n input::placeholder {\n color: var(--ox-filters-input-placeholder-color, var(--md-sys-color-on-surface-variant));\n opacity: 0.7;\n }\n\n input,\n ox-input-search,\n [filter-input] {\n padding: var(--ox-filters-input-padding);\n height: var(--form-element-height-medium);\n }\n\n ox-select,\n ox-input-search,\n input,\n [filter-input] {\n border: none;\n border-bottom: var(--ox-filters-input-border, var(--md-sys-color-outline));\n font: var(--ox-filters-input-font);\n color: var(--ox-filters-input-color, var(--md-sys-color-on-surface-variant));\n background-color: var(--ox-filters-input-background-color, transparent);\n }\n\n ox-select:focus,\n input:focus,\n [filter-input]:focus {\n outline: none;\n border-bottom: var(--ox-filters-input-focus-border);\n color: var(--ox-filters-input-focus-color, var(--md-sys-color-primary));\n }\n\n ox-select {\n min-width: 90px;\n max-width: 170px;\n }\n\n ox-input-search {\n max-width: 150px;\n }\n\n input[type='number'] {\n max-width: 90px;\n }\n\n input[type*='date'],\n input[type*='time'],\n input[type='week'],\n input[type='month'] {\n max-width: 170px;\n }\n\n [filter-input] {\n min-width: 140px;\n max-width: 170px;\n }\n\n @media only screen and (max-width: 460px) {\n :host {\n --ox-filters-form-label-font: bold 13px var(--theme-font);\n --ox-filters-input-font: normal 16px var(--theme-font);\n }\n\n ox-input-barcode {\n max-width: unset;\n flex: 1;\n }\n\n ox-input-search {\n max-width: unset;\n }\n\n ox-select {\n max-width: unset;\n }\n\n ox-checkbox {\n max-width: unset;\n }\n\n input[type='number'] {\n max-width: unset;\n }\n\n input {\n flex: 1;\n }\n\n [readonly] {\n background-color: #f0f0f0;\n }\n }\n`\n"]}
|
|
@@ -27,5 +27,7 @@ export declare class OxFiltersFormBase extends LitElement {
|
|
|
27
27
|
applyUpdatedConfiguration(): Promise<void>;
|
|
28
28
|
getFieldByName(name: string): Element | null;
|
|
29
29
|
getQueryFilters(): Promise<FilterValue[]>;
|
|
30
|
-
reset(
|
|
30
|
+
reset(value?: string[] | {
|
|
31
|
+
[field: string]: any;
|
|
32
|
+
}): void;
|
|
31
33
|
}
|
|
@@ -74,7 +74,7 @@ let OxFiltersFormBase = class OxFiltersFormBase extends LitElement {
|
|
|
74
74
|
.filter(filter => !filter.hidden)
|
|
75
75
|
.map((filter) => {
|
|
76
76
|
var _a, _b, _c;
|
|
77
|
-
const { name, label, type, operator, value: defaultValue } = filter;
|
|
77
|
+
const { name, label, type, operator, readonly, value: defaultValue } = filter;
|
|
78
78
|
const idx = operator === 'between' ? 1 : 0;
|
|
79
79
|
const renderer = getFilterRenderer(operator === 'like' || operator === 'i_like' || operator === 'i_nlike' || operator === 'nlike'
|
|
80
80
|
? 'text'
|
|
@@ -84,7 +84,12 @@ let OxFiltersFormBase = class OxFiltersFormBase extends LitElement {
|
|
|
84
84
|
return nothing;
|
|
85
85
|
}
|
|
86
86
|
return type === 'search'
|
|
87
|
-
? html `<ox-input-search
|
|
87
|
+
? html `<ox-input-search
|
|
88
|
+
name="search"
|
|
89
|
+
.value=${value}
|
|
90
|
+
?autofocus=${this.autofocus}
|
|
91
|
+
?readonly=${readonly}
|
|
92
|
+
></ox-input-search>`
|
|
88
93
|
: type === 'boolean' || type === 'checkbox'
|
|
89
94
|
? renderer(filter, value, this)
|
|
90
95
|
: type !== 'select'
|
|
@@ -101,7 +106,7 @@ let OxFiltersFormBase = class OxFiltersFormBase extends LitElement {
|
|
|
101
106
|
`;
|
|
102
107
|
}
|
|
103
108
|
renderSelect(filter, value, renderer) {
|
|
104
|
-
const { name, label, operator, value: defaultValue } = filter;
|
|
109
|
+
const { name, label, operator, readonly, value: defaultValue } = filter;
|
|
105
110
|
return operator === 'in'
|
|
106
111
|
? html `
|
|
107
112
|
<ox-select
|
|
@@ -118,6 +123,7 @@ let OxFiltersFormBase = class OxFiltersFormBase extends LitElement {
|
|
|
118
123
|
}
|
|
119
124
|
}));
|
|
120
125
|
}}
|
|
126
|
+
?readonly=${readonly}
|
|
121
127
|
>
|
|
122
128
|
<ox-popup-list multiple attr-selected="checked" with-search>
|
|
123
129
|
${renderer(filter, value, this)}
|
|
@@ -139,6 +145,7 @@ let OxFiltersFormBase = class OxFiltersFormBase extends LitElement {
|
|
|
139
145
|
}
|
|
140
146
|
}));
|
|
141
147
|
}}
|
|
148
|
+
?readonly=${readonly}
|
|
142
149
|
>
|
|
143
150
|
<ox-popup-list with-search> ${renderer(filter, value, this)} </ox-popup-list>
|
|
144
151
|
</ox-select>
|
|
@@ -293,10 +300,37 @@ let OxFiltersFormBase = class OxFiltersFormBase extends LitElement {
|
|
|
293
300
|
.filter(result => result !== undefined);
|
|
294
301
|
return filters;
|
|
295
302
|
}
|
|
296
|
-
reset() {
|
|
303
|
+
reset(value) {
|
|
297
304
|
this.form
|
|
298
305
|
.then((form) => {
|
|
299
|
-
|
|
306
|
+
if (value) {
|
|
307
|
+
if (value instanceof Array) {
|
|
308
|
+
value
|
|
309
|
+
.filter(item => typeof item == 'string')
|
|
310
|
+
.forEach(item => {
|
|
311
|
+
const field = this.getFieldByName(item);
|
|
312
|
+
if (field) {
|
|
313
|
+
;
|
|
314
|
+
field.value = '';
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
const keys = Object.keys(value);
|
|
320
|
+
keys
|
|
321
|
+
.filter(key => typeof key == 'string')
|
|
322
|
+
.forEach(key => {
|
|
323
|
+
const field = this.getFieldByName(key);
|
|
324
|
+
if (field) {
|
|
325
|
+
;
|
|
326
|
+
field.value = value[key];
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
else {
|
|
332
|
+
form.reset();
|
|
333
|
+
}
|
|
300
334
|
})
|
|
301
335
|
.catch((error) => {
|
|
302
336
|
console.error('Error resetting the form:', error);
|