@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.
Files changed (42) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/src/components/ox-search-form.d.ts +4 -1
  3. package/dist/src/components/ox-search-form.js +42 -8
  4. package/dist/src/components/ox-search-form.js.map +1 -1
  5. package/dist/src/filters/filter-checkbox.js +2 -1
  6. package/dist/src/filters/filter-checkbox.js.map +1 -1
  7. package/dist/src/filters/filter-input-barcode.js +3 -2
  8. package/dist/src/filters/filter-input-barcode.js.map +1 -1
  9. package/dist/src/filters/filter-input.js +2 -1
  10. package/dist/src/filters/filter-input.js.map +1 -1
  11. package/dist/src/filters/filter-range-date.js +3 -1
  12. package/dist/src/filters/filter-range-date.js.map +1 -1
  13. package/dist/src/filters/filter-range-number.js +3 -1
  14. package/dist/src/filters/filter-range-number.js.map +1 -1
  15. package/dist/src/filters/filter-styles.js +4 -0
  16. package/dist/src/filters/filter-styles.js.map +1 -1
  17. package/dist/src/filters/ox-filters-form-base.d.ts +3 -1
  18. package/dist/src/filters/ox-filters-form-base.js +39 -5
  19. package/dist/src/filters/ox-filters-form-base.js.map +1 -1
  20. package/dist/src/styles/search-form-styles.js +8 -2
  21. package/dist/src/styles/search-form-styles.js.map +1 -1
  22. package/dist/src/types.d.ts +2 -0
  23. package/dist/src/types.js.map +1 -1
  24. package/dist/stories/ox-search-form-change-handler.stories.js +2 -0
  25. package/dist/stories/ox-search-form-change-handler.stories.js.map +1 -1
  26. package/dist/stories/ox-search-form.stories.d.ts +6 -0
  27. package/dist/stories/ox-search-form.stories.js +12 -1
  28. package/dist/stories/ox-search-form.stories.js.map +1 -1
  29. package/dist/tsconfig.tsbuildinfo +1 -1
  30. package/package.json +7 -7
  31. package/src/components/ox-search-form.ts +39 -8
  32. package/src/filters/filter-checkbox.ts +2 -1
  33. package/src/filters/filter-input-barcode.ts +3 -2
  34. package/src/filters/filter-input.ts +2 -1
  35. package/src/filters/filter-range-date.ts +3 -1
  36. package/src/filters/filter-range-number.ts +3 -1
  37. package/src/filters/filter-styles.ts +4 -0
  38. package/src/filters/ox-filters-form-base.ts +35 -5
  39. package/src/styles/search-form-styles.ts +8 -2
  40. package/src/types.ts +2 -0
  41. package/stories/ox-search-form-change-handler.stories.ts +2 -0
  42. 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(): void;
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=${field.hidden}>${field.label || field.name || field.id}</label>
102
+ <label ?hidden=${hidden}>${label || name || id}</label>
103
103
  <select
104
- .value=${field.value}
105
- name=${ifDefined(field.name)}
106
- placeholder=${ifDefined(field.placeholder)}
107
- ?hidden=${field.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
- form.reset();
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;IAE9B,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;sBACe,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 } = 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 ><label><span>${label}</span></label></ox-checkbox\n >\n `\n}\n"]}
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, type, options } = filter;
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,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IACtC,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;;;GAGJ,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, type, 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 />\n `\n}\n"]}
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;IAE7B,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;;GAEJ,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 } = 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 />\n `\n}\n"]}
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":"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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 } = 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 />\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 />\n `\n}\n"]}
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;IACjC,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;;;;aAIM,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;;GAEJ,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 } = 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 />\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 />\n `\n}\n"]}
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"]}
@@ -117,6 +117,10 @@ export const FilterStyles = css `
117
117
  input {
118
118
  flex: 1;
119
119
  }
120
+
121
+ [readonly] {
122
+ background-color: #f0f0f0;
123
+ }
120
124
  }
121
125
  `;
122
126
  //# sourceMappingURL=filter-styles.js.map
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuH9B,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`\n"]}
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(): void;
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 name="search" .value=${value} ?autofocus=${this.autofocus}></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
- form.reset();
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);