@neovici/cosmoz-omnitable 14.12.1 → 14.12.3

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 (52) hide show
  1. package/README.md +1 -2
  2. package/cosmoz-omnitable-column-amount.js +1 -5
  3. package/cosmoz-omnitable-column-boolean.js +82 -63
  4. package/cosmoz-omnitable-column-date.js +1 -5
  5. package/cosmoz-omnitable-column-datetime.js +1 -6
  6. package/cosmoz-omnitable-column-list-data.js +57 -49
  7. package/cosmoz-omnitable-column-list-horizontal.js +42 -26
  8. package/cosmoz-omnitable-column-mixin.js +0 -1
  9. package/cosmoz-omnitable-column-time.js +1 -5
  10. package/cosmoz-omnitable-column.js +0 -1
  11. package/cosmoz-omnitable-group-row.js +10 -2
  12. package/cosmoz-omnitable-header-row.js +38 -49
  13. package/cosmoz-omnitable-item-expand-line.js +1 -1
  14. package/grouped-list/cosmoz-grouped-list-row.js +1 -1
  15. package/grouped-list/use-cosmoz-grouped-list.js +15 -28
  16. package/grouped-list/use-selected-items.js +25 -26
  17. package/grouped-list/use-weak-state.js +2 -2
  18. package/grouped-list/utils.js +11 -9
  19. package/lib/compute-layout.js +2 -1
  20. package/lib/cosmoz-omnitable-amount-range-input.js +102 -107
  21. package/lib/cosmoz-omnitable-date-input-mixin.js +20 -21
  22. package/lib/cosmoz-omnitable-date-range-input.js +85 -79
  23. package/lib/cosmoz-omnitable-datetime-range-input.js +85 -79
  24. package/lib/cosmoz-omnitable-number-range-input.js +35 -32
  25. package/lib/cosmoz-omnitable-range-input-mixin.js +19 -58
  26. package/lib/cosmoz-omnitable-time-range-input.js +54 -31
  27. package/lib/icons.js +0 -1
  28. package/lib/layout.js +12 -15
  29. package/lib/polymer-haunted-render-mixin.js +14 -13
  30. package/lib/save-as-csv-action.js +31 -27
  31. package/lib/save-as-xlsx-action.js +13 -11
  32. package/lib/settings/cosmoz-omnitable-settings.js +0 -1
  33. package/lib/settings/cosmoz-omnitable-sort-group.js +1 -1
  34. package/lib/settings/drivers/context.js +1 -1
  35. package/lib/settings/normalize.js +0 -1
  36. package/lib/settings/style.css.js +3 -2
  37. package/lib/settings/use-saved-settings.js +0 -1
  38. package/lib/settings/use-settings-ui.js +1 -6
  39. package/lib/use-dom-columns.js +0 -1
  40. package/lib/use-hash-state.js +1 -1
  41. package/lib/use-processed-items.js +23 -34
  42. package/lib/use-public-interface.js +0 -1
  43. package/lib/use-sort-and-group-options.js +2 -11
  44. package/lib/use-tween-array.js +0 -1
  45. package/lib/utils-amount.js +16 -32
  46. package/lib/utils-data.js +24 -24
  47. package/lib/utils-date.js +17 -34
  48. package/lib/utils-datetime.js +10 -15
  49. package/lib/utils-number.js +28 -29
  50. package/lib/utils-time.js +21 -24
  51. package/lib/utils.js +1 -1
  52. package/package.json +9 -3
package/README.md CHANGED
@@ -1,5 +1,4 @@
1
- cosmoz-omnitable
2
- =================
1
+ # cosmoz-omnitable
3
2
 
4
3
  [![Build Status](https://github.com/Neovici/cosmoz-omnitable/workflows/Github%20CI/badge.svg)](https://github.com/Neovici/cosmoz-omnitable/actions?workflow=Github+CI)
5
4
  [![codecov](https://codecov.io/gh/Neovici/cosmoz-omnitable/branch/master/graph/badge.svg?token=j46iVMxjcs)](https://codecov.io/gh/Neovici/cosmoz-omnitable)
@@ -1,4 +1,3 @@
1
- /* eslint-disable no-return-assign */
2
1
  import '@neovici/cosmoz-input';
3
2
  import '@polymer/paper-dropdown-menu/paper-dropdown-menu';
4
3
  import './ui-helpers/cosmoz-clear-button';
@@ -96,10 +95,7 @@ class OmnitableColumnAmount extends columnMixin(PolymerElement) {
96
95
  return null;
97
96
  }
98
97
 
99
- return {
100
- min: fromHashString(matches[1]),
101
- max: fromHashString(matches[2]),
102
- };
98
+ return { min: fromHashString(matches[1]), max: fromHashString(matches[2]) };
103
99
  }
104
100
 
105
101
  renderCell(column, { item }) {
@@ -4,69 +4,53 @@ import { columnMixin } from './cosmoz-omnitable-column-mixin';
4
4
 
5
5
  import '@polymer/paper-spinner/paper-spinner-lite';
6
6
  import '@neovici/cosmoz-autocomplete';
7
- import {
8
- html, nothing
9
- } from 'lit-html';
7
+ import { html, nothing } from 'lit-html';
10
8
  import { get } from '@polymer/polymer/lib/utils/path';
11
9
  import { memooize } from '@neovici/cosmoz-utils/memoize';
12
10
 
13
- const
14
- computeValue = (value, source) =>
11
+ const computeValue = (value, source) =>
15
12
  source.find(({ value: valueProp }) => value === valueProp),
16
-
17
13
  computeTooltip = (title, value, source) => {
18
14
  const val = computeValue(value, source);
19
15
  return val ? val.text : title;
20
16
  },
21
-
22
- computeItemTooltip = (title, item, valuePath, source) => computeTooltip(
23
- title,
24
- get(item, valuePath),
25
- source
26
- ),
27
-
28
- computeItemValue = ({ valuePath }, item, source) => computeValue(
29
- get(item, valuePath),
30
- source
31
- ),
32
-
33
- onChange = setState => selection => {
34
- setState(state => ({ ...state, filter: selection?.[0]?.value ?? null }));
17
+ computeItemTooltip = (title, item, valuePath, source) =>
18
+ computeTooltip(title, get(item, valuePath), source),
19
+ computeItemValue = ({ valuePath }, item, source) =>
20
+ computeValue(get(item, valuePath), source),
21
+ onChange = (setState) => (selection) => {
22
+ setState((state) => ({ ...state, filter: selection?.[0]?.value ?? null }));
35
23
  },
36
-
37
- onFocus = setState => focused => {
38
- setState(state => ({ ...state, headerFocused: focused }));
24
+ onFocus = (setState) => (focused) => {
25
+ setState((state) => ({ ...state, headerFocused: focused }));
39
26
  },
40
-
41
- onText = setState => text => {
42
- setState(state => ({ ...state, query: text }));
27
+ onText = (setState) => (text) => {
28
+ setState((state) => ({ ...state, query: text }));
43
29
  },
44
-
45
- onEditableChange = onItemChange => selection => onItemChange(selection?.[0]?.value),
46
-
30
+ onEditableChange = (onItemChange) => (selection) =>
31
+ onItemChange(selection?.[0]?.value),
47
32
  getString = ({ valuePath, trueLabel, falseLabel }, item) => {
48
33
  const value = get(item, valuePath);
49
34
  return value ? trueLabel : falseLabel;
50
35
  },
51
-
52
- applySingleFilter = ({ valuePath }, filter) => item => get(item, valuePath) === filter,
53
-
36
+ applySingleFilter =
37
+ ({ valuePath }, filter) =>
38
+ (item) =>
39
+ get(item, valuePath) === filter,
54
40
  computeSource = memooize((trueLabel, falseLabel) => [
55
41
  { text: trueLabel, value: true },
56
- { text: falseLabel, value: false }
42
+ { text: falseLabel, value: false },
57
43
  ]),
58
-
59
44
  toXlsxValue = ({ valuePath, trueLabel, falseLabel }, item) => {
60
45
  if (!valuePath) {
61
46
  return '';
62
47
  }
63
48
  return get(item, valuePath) ? trueLabel : falseLabel;
64
49
  },
65
-
66
50
  deserializeFilter = (column, filter) => {
67
51
  try {
68
52
  return JSON.parse(filter);
69
- } catch (e) {
53
+ } catch {
70
54
  return null;
71
55
  }
72
56
  };
@@ -82,7 +66,7 @@ class OmnitableColumnBoolean extends columnMixin(PolymerElement) {
82
66
  trueLabel: { type: String, value: 'True' },
83
67
  falseLabel: { type: String, value: 'False' },
84
68
  flex: { type: String, value: '0' },
85
- cellClass: { type: String, value: 'boolean-cell' }
69
+ cellClass: { type: String, value: 'boolean-cell' },
86
70
  };
87
71
  }
88
72
 
@@ -99,40 +83,65 @@ class OmnitableColumnBoolean extends columnMixin(PolymerElement) {
99
83
  }
100
84
 
101
85
  renderEditCell(column, { item }, onItemChange) {
102
- const
103
- { trueLabel, falseLabel } = column,
86
+ const { trueLabel, falseLabel } = column,
104
87
  spinner = column.loading
105
- ? html`<paper-spinner-lite style="width: 20px; height: 20px;" suffix slot="suffix" active></paper-spinner-lite>`
88
+ ? html`<paper-spinner-lite
89
+ style="width: 20px; height: 20px;"
90
+ suffix
91
+ slot="suffix"
92
+ active
93
+ ></paper-spinner-lite>`
106
94
  : nothing;
107
95
 
108
96
  return html`<cosmoz-autocomplete
109
- no-label-float
110
- .title=${ computeItemTooltip(column.title, item, column.valuePath, computeSource(trueLabel, falseLabel)) }
111
- .source=${ computeSource(trueLabel, falseLabel) }
112
- .textProperty=${ 'text' }
113
- .value=${ computeItemValue(column, item, computeSource(trueLabel, falseLabel)) }
114
- .onChange=${ onEditableChange(onItemChange) }
115
- .limit=${ 1 }
116
- >${ spinner }</cosmoz-autocomplete>`;
97
+ no-label-float
98
+ .title=${computeItemTooltip(
99
+ column.title,
100
+ item,
101
+ column.valuePath,
102
+ computeSource(trueLabel, falseLabel),
103
+ )}
104
+ .source=${computeSource(trueLabel, falseLabel)}
105
+ .textProperty=${'text'}
106
+ .value=${computeItemValue(
107
+ column,
108
+ item,
109
+ computeSource(trueLabel, falseLabel),
110
+ )}
111
+ .onChange=${onEditableChange(onItemChange)}
112
+ .limit=${1}
113
+ >${spinner}</cosmoz-autocomplete
114
+ >`;
117
115
  }
118
116
 
119
117
  renderHeader(column, { filter, query }, setState, source) {
120
118
  const spinner = column.loading
121
- ? html`<paper-spinner-lite style="width: 20px; height: 20px;" suffix slot="suffix" active></paper-spinner-lite>`
119
+ ? html`<paper-spinner-lite
120
+ style="width: 20px; height: 20px;"
121
+ suffix
122
+ slot="suffix"
123
+ active
124
+ ></paper-spinner-lite>`
122
125
  : nothing;
123
126
 
124
127
  return html`<cosmoz-autocomplete-ui
125
- .label=${ column.title }
126
- .title=${ computeItemTooltip(column.title, filter, column.valuePath, source) }
127
- .source=${ source }
128
- .textProperty=${ 'text' }
129
- .value=${ computeValue(filter, source) }
130
- .text=${ query }
131
- .onChange=${ onChange(setState) }
132
- .onFocus=${ onFocus(setState) }
133
- .onText=${ onText(setState) }
134
- .limit=${ 1 }
135
- >${ spinner }</cosmoz-autocomplete-ui>`;
128
+ .label=${column.title}
129
+ .title=${computeItemTooltip(
130
+ column.title,
131
+ filter,
132
+ column.valuePath,
133
+ source,
134
+ )}
135
+ .source=${source}
136
+ .textProperty=${'text'}
137
+ .value=${computeValue(filter, source)}
138
+ .text=${query}
139
+ .onChange=${onChange(setState)}
140
+ .onFocus=${onFocus(setState)}
141
+ .onText=${onText(setState)}
142
+ .limit=${1}
143
+ >${spinner}</cosmoz-autocomplete-ui
144
+ >`;
136
145
  }
137
146
 
138
147
  computeSource({ trueLabel, falseLabel }) {
@@ -154,6 +163,16 @@ class OmnitableColumnBoolean extends columnMixin(PolymerElement) {
154
163
  return deserializeFilter(column, filter);
155
164
  }
156
165
  }
157
- customElements.define('cosmoz-omnitable-column-boolean', OmnitableColumnBoolean);
158
-
159
- export { getString, computeItemValue, computeSource, toXlsxValue, onChange, deserializeFilter };
166
+ customElements.define(
167
+ 'cosmoz-omnitable-column-boolean',
168
+ OmnitableColumnBoolean,
169
+ );
170
+
171
+ export {
172
+ getString,
173
+ computeItemValue,
174
+ computeSource,
175
+ toXlsxValue,
176
+ onChange,
177
+ deserializeFilter,
178
+ };
@@ -1,4 +1,3 @@
1
- /* eslint-disable no-return-assign */
2
1
  import { html } from 'lit-html';
3
2
  import { PolymerElement } from '@polymer/polymer/polymer-element';
4
3
  import '@polymer/paper-dropdown-menu/paper-dropdown-menu';
@@ -86,10 +85,7 @@ class OmnitableColumnDate extends columnMixin(PolymerElement) {
86
85
  return null;
87
86
  }
88
87
 
89
- return {
90
- min: toDate(matches[1]),
91
- max: toDate(matches[2]),
92
- };
88
+ return { min: toDate(matches[1]), max: toDate(matches[2]) };
93
89
  }
94
90
 
95
91
  renderCell(column, { item }) {
@@ -1,4 +1,3 @@
1
- /* eslint-disable no-return-assign */
2
1
  import '@polymer/paper-dropdown-menu/paper-dropdown-menu';
3
2
  import '@neovici/cosmoz-datetime-input';
4
3
  import './ui-helpers/cosmoz-clear-button';
@@ -98,10 +97,7 @@ class OmnitableColumnDatetime extends columnMixin(PolymerElement) {
98
97
  return null;
99
98
  }
100
99
 
101
- return {
102
- min: fromHashString(matches[1]),
103
- max: fromHashString(matches[2]),
104
- };
100
+ return { min: fromHashString(matches[1]), max: fromHashString(matches[2]) };
105
101
  }
106
102
 
107
103
  renderCell(column, { item }) {
@@ -119,7 +115,6 @@ class OmnitableColumnDatetime extends columnMixin(PolymerElement) {
119
115
  ></cosmoz-input>`;
120
116
  }
121
117
 
122
- // eslint-disable-next-line max-lines-per-function
123
118
  renderHeader(
124
119
  { title, min, max, limits, locale, filterStep },
125
120
  { filter },
@@ -1,7 +1,5 @@
1
1
  import { translatable } from '@neovici/cosmoz-i18next';
2
- import {
3
- mixin, Template
4
- } from '@neovici/cosmoz-utils';
2
+ import { mixin, Template } from '@neovici/cosmoz-utils';
5
3
 
6
4
  import { PolymerElement } from '@polymer/polymer/polymer-element';
7
5
  import { html } from '@polymer/polymer/lib/utils/html-tag';
@@ -12,51 +10,59 @@ window.Cosmoz = window.Cosmoz || {};
12
10
  * @customElement
13
11
  * @appliesMixin translatable
14
12
  */
15
- class OmnitableColumnListData extends translatable(mixin(Template, PolymerElement)) {
13
+ class OmnitableColumnListData extends translatable(
14
+ mixin(Template, PolymerElement),
15
+ ) {
16
16
  static get template() {
17
17
  return html`
18
- <style>
19
- :host {
20
- display: block;
21
- }
22
-
23
- :host a {
24
- color: var(--primary-link-color, inherit);
25
- }
26
-
27
- [hidden] {
28
- display: none;
29
- }
30
-
31
- ul {
32
- list-style-type: none;
33
- margin: 0.3em 0;
34
- padding-left: 0;
35
- }
36
-
37
- li {
38
- text-overflow: ellipsis;
39
- overflow: hidden;
40
- }
41
- </style>
42
-
43
- <ul hidden$="[[ isEmpty(items) ]]">
44
- <li>
45
- <span>[[ _firstItem(items) ]]</span>
46
- </li>
47
- <li class="see-more" hidden$="[[_hideExpand(items, _expanded)]]">
48
- <a href="#" on-tap="_toggleExpand">[[ _('and {0} more', _othersCount, t) ]]</a>
49
- </li>
50
- <template is="dom-repeat" items="[[ _otherItems(items, _expanded) ]]" as="item">
18
+ <style>
19
+ :host {
20
+ display: block;
21
+ }
22
+
23
+ :host a {
24
+ color: var(--primary-link-color, inherit);
25
+ }
26
+
27
+ [hidden] {
28
+ display: none;
29
+ }
30
+
31
+ ul {
32
+ list-style-type: none;
33
+ margin: 0.3em 0;
34
+ padding-left: 0;
35
+ }
36
+
37
+ li {
38
+ text-overflow: ellipsis;
39
+ overflow: hidden;
40
+ }
41
+ </style>
42
+
43
+ <ul hidden$="[[ isEmpty(items) ]]">
51
44
  <li>
52
- <span class="item">[[ item ]]</span>
45
+ <span>[[ _firstItem(items) ]]</span>
46
+ </li>
47
+ <li class="see-more" hidden$="[[_hideExpand(items, _expanded)]]">
48
+ <a href="#" on-tap="_toggleExpand"
49
+ >[[ _('and {0} more', _othersCount, t) ]]</a
50
+ >
53
51
  </li>
54
- </template>
55
- <li class="see-less" hidden$="[[ _hideCollapse(items, _expanded) ]]">
56
- <a href="#" on-tap="_toggleExpand">[[ _('See less', t) ]]</a>
57
- </li>
58
- </ul>
59
- `;
52
+ <template
53
+ is="dom-repeat"
54
+ items="[[ _otherItems(items, _expanded) ]]"
55
+ as="item"
56
+ >
57
+ <li>
58
+ <span class="item">[[ item ]]</span>
59
+ </li>
60
+ </template>
61
+ <li class="see-less" hidden$="[[ _hideCollapse(items, _expanded) ]]">
62
+ <a href="#" on-tap="_toggleExpand">[[ _('See less', t) ]]</a>
63
+ </li>
64
+ </ul>
65
+ `;
60
66
  }
61
67
 
62
68
  static get is() {
@@ -71,22 +77,24 @@ class OmnitableColumnListData extends translatable(mixin(Template, PolymerElemen
71
77
 
72
78
  _expanded: {
73
79
  type: Boolean,
74
- value: false
80
+ value: false,
75
81
  },
76
82
 
77
83
  _othersCount: {
78
84
  type: Number,
79
- computed: '_computeOthersCount(items)'
80
- }
85
+ computed: '_computeOthersCount(items)',
86
+ },
81
87
  };
82
88
  }
83
89
 
84
90
  static get observers() {
85
- return ['_itemsLengthChanged(items.length)']
91
+ return ['_itemsLengthChanged(items.length)'];
86
92
  }
87
93
 
88
94
  _itemsLengthChanged() {
89
- requestAnimationFrame(() => this.dispatchEvent(new CustomEvent('expand', { bubbles: true })));
95
+ requestAnimationFrame(() =>
96
+ this.dispatchEvent(new CustomEvent('expand', { bubbles: true })),
97
+ );
90
98
  }
91
99
 
92
100
  _firstItem(items) {
@@ -1,12 +1,16 @@
1
1
  import '@neovici/cosmoz-autocomplete';
2
2
 
3
3
  import { PolymerElement } from '@polymer/polymer/polymer-element';
4
- import {
5
- html, nothing
6
- } from 'lit-html';
4
+ import { html, nothing } from 'lit-html';
7
5
 
8
6
  import { columnMixin } from './cosmoz-omnitable-column-mixin';
9
- import { getTexts, listColumnMixin, onChange, onFocus, onText } from './cosmoz-omnitable-column-list-mixin';
7
+ import {
8
+ getTexts,
9
+ listColumnMixin,
10
+ onChange,
11
+ onFocus,
12
+ onText,
13
+ } from './cosmoz-omnitable-column-list-mixin';
10
14
 
11
15
  /**
12
16
  * @polymer
@@ -14,9 +18,13 @@ import { getTexts, listColumnMixin, onChange, onFocus, onText } from './cosmoz-o
14
18
  * @appliesMixin listColumnMixin
15
19
  * @appliesMixin columnMixin
16
20
  */
17
- class OmnitableColumnListHorizontal extends listColumnMixin(columnMixin(PolymerElement)) {
21
+ class OmnitableColumnListHorizontal extends listColumnMixin(
22
+ columnMixin(PolymerElement),
23
+ ) {
18
24
  renderCell({ valuePath, textProperty }, { item }) {
19
- const list = getTexts(item, valuePath, textProperty).map(item => html`<li>${ item }</li>`);
25
+ const list = getTexts(item, valuePath, textProperty).map(
26
+ (item) => html`<li>${item}</li>`,
27
+ );
20
28
 
21
29
  return html`
22
30
  <style>
@@ -29,13 +37,15 @@ class OmnitableColumnListHorizontal extends listColumnMixin(columnMixin(PolymerE
29
37
  display: inline;
30
38
  }
31
39
  ul li:after {
32
- content: ", ";
40
+ content: ', ';
33
41
  }
34
42
  ul li:last-child:after {
35
- content: "";
43
+ content: '';
36
44
  }
37
45
  </style>
38
- <ul>${ list }</ul>
46
+ <ul>
47
+ ${list}
48
+ </ul>
39
49
  `;
40
50
  }
41
51
 
@@ -44,24 +54,30 @@ class OmnitableColumnListHorizontal extends listColumnMixin(columnMixin(PolymerE
44
54
  }
45
55
 
46
56
  renderHeader(column, { filter, query }, setState, source) {
47
- const
48
- spinner = column.loading
49
- ? html`<paper-spinner-lite style="width: 20px; height: 20px;" suffix slot="suffix" active></paper-spinner-lite>`
50
- : nothing;
57
+ const spinner = column.loading
58
+ ? html`<paper-spinner-lite
59
+ style="width: 20px; height: 20px;"
60
+ suffix
61
+ slot="suffix"
62
+ active
63
+ ></paper-spinner-lite>`
64
+ : nothing;
51
65
  return html`<cosmoz-autocomplete-ui
52
- class="external-values-${ column.externalValues }"
53
- .label=${ column.title }
54
- .source=${ source }
55
- .textProperty=${ column.textProperty }
56
- .value=${ filter }
57
- .text=${ query }
58
- .onChange=${ onChange(setState) }
59
- .onFocus=${ onFocus(setState) }
60
- .onText=${ onText(setState) }
61
- >${ spinner }</cosmoz-autocomplete-ui>
62
- `;
66
+ class="external-values-${column.externalValues}"
67
+ .label=${column.title}
68
+ .source=${source}
69
+ .textProperty=${column.textProperty}
70
+ .value=${filter}
71
+ .text=${query}
72
+ .onChange=${onChange(setState)}
73
+ .onFocus=${onFocus(setState)}
74
+ .onText=${onText(setState)}
75
+ >${spinner}</cosmoz-autocomplete-ui
76
+ > `;
63
77
  }
64
-
65
78
  }
66
79
 
67
- customElements.define('cosmoz-omnitable-column-list-horizontal', OmnitableColumnListHorizontal);
80
+ customElements.define(
81
+ 'cosmoz-omnitable-column-list-horizontal',
82
+ OmnitableColumnListHorizontal,
83
+ );
@@ -18,7 +18,6 @@ export const getString = ({ valuePath }, item) => get(item, valuePath),
18
18
  },
19
19
  serializeFilter = (column, filter) =>
20
20
  filter === '' || filter == null ? null : filter,
21
- // eslint-disable-next-line max-lines-per-function
22
21
  columnMixin = (base) =>
23
22
  class extends base {
24
23
  static get properties() {
@@ -1,4 +1,3 @@
1
- /* eslint-disable no-return-assign */
2
1
  import '@polymer/paper-dropdown-menu/paper-dropdown-menu';
3
2
  import '@neovici/cosmoz-input';
4
3
 
@@ -93,10 +92,7 @@ class OmnitableColumnTime extends columnMixin(PolymerElement) {
93
92
  return null;
94
93
  }
95
94
 
96
- return {
97
- min: fromHashString(matches[1]),
98
- max: fromHashString(matches[2]),
99
- };
95
+ return { min: fromHashString(matches[1]), max: fromHashString(matches[2]) };
100
96
  }
101
97
 
102
98
  renderCell(column, { item }) {
@@ -1,4 +1,3 @@
1
- /* eslint-disable no-return-assign */
2
1
  import '@neovici/cosmoz-input';
3
2
  import './ui-helpers/cosmoz-clear-button';
4
3
 
@@ -6,7 +6,15 @@ const GroupRow = ({ column, item, selected, folded, group }) => {
6
6
  return nothing;
7
7
  }
8
8
 
9
- return (column.renderGroup ?? column.renderCell)(column, { item, selected, folded, group });
9
+ return (column.renderGroup ?? column.renderCell)(column, {
10
+ item,
11
+ selected,
12
+ folded,
13
+ group,
14
+ });
10
15
  };
11
16
 
12
- customElements.define('cosmoz-omnitable-group-row', component(GroupRow, { useShadowDOM: false }));
17
+ customElements.define(
18
+ 'cosmoz-omnitable-group-row',
19
+ component(GroupRow, { useShadowDOM: false }),
20
+ );
@@ -5,61 +5,50 @@ import { render } from './lib/settings/cosmoz-omnitable-sort-group';
5
5
  import { when } from 'lit-html/directives/when.js';
6
6
  import { SortAndGroupContext } from './lib/use-sort-and-group-options';
7
7
 
8
- const /* eslint-disable-next-line max-lines-per-function */
9
- renderHeaderRow = ({
10
- data,
8
+ const renderHeaderRow = ({
9
+ data,
10
+ columns,
11
+ groupOnColumn,
12
+ filters,
13
+ setFilterState,
14
+ sortAndGroup: {
15
+ sortOn: on,
16
+ setSortOn: setOn,
17
+ descending,
18
+ setDescending,
19
+ } = {},
20
+ }) =>
21
+ repeat(
11
22
  columns,
12
- groupOnColumn,
13
- filters,
14
- setFilterState,
15
- sortAndGroup: {
16
- sortOn: on,
17
- setSortOn: setOn,
18
- descending,
19
- setDescending,
20
- } = {},
21
- }) =>
22
- repeat(
23
- columns,
24
- (column) => column.name,
25
- (column) => [
26
- html`<div
27
- class="cell ${column.headerCellClass} header-cell"
28
- part="cell header-cell cell-${column.name} header-cell-${column.name}"
29
- ?hidden="${column === groupOnColumn}"
30
- title="${column.title}"
31
- name="${column.name}"
32
- >
33
- ${column.renderHeader(
34
- column,
35
- filters[column.name] ?? {},
36
- (state) => setFilterState(column.name, state),
37
- column.source(column, data),
38
- )}
39
- ${render({
40
- on,
41
- setOn,
42
- descending,
43
- setDescending,
44
- column,
45
- })}
46
- </div>`,
47
- html`<cosmoz-omnitable-resize-nub
48
- .column="${column}"
49
- name="${column.name}"
50
- ></cosmoz-omnitable-resize-nub>`,
51
- ],
52
- );
23
+ (column) => column.name,
24
+ (column) => [
25
+ html`<div
26
+ class="cell ${column.headerCellClass} header-cell"
27
+ part="cell header-cell cell-${column.name} header-cell-${column.name}"
28
+ ?hidden="${column === groupOnColumn}"
29
+ title="${column.title}"
30
+ name="${column.name}"
31
+ >
32
+ ${column.renderHeader(
33
+ column,
34
+ filters[column.name] ?? {},
35
+ (state) => setFilterState(column.name, state),
36
+ column.source(column, data),
37
+ )}
38
+ ${render({ on, setOn, descending, setDescending, column })}
39
+ </div>`,
40
+ html`<cosmoz-omnitable-resize-nub
41
+ .column="${column}"
42
+ name="${column.name}"
43
+ ></cosmoz-omnitable-resize-nub>`,
44
+ ],
45
+ );
53
46
 
54
47
  const HeaderRow = ({ columns, settingsConfig, hideSelectAll, ...thru }) => {
55
48
  const sortAndGroup = useContext(SortAndGroupContext);
56
49
  return html`
57
50
  ${when(columns, (columns) =>
58
- renderHeaderRow({
59
- columns,
60
- sortAndGroup,
61
- ...thru,
62
- }),
51
+ renderHeaderRow({ columns, sortAndGroup, ...thru }),
63
52
  )}
64
53
  ${when(
65
54
  !hideSelectAll,
@@ -35,5 +35,5 @@ const ItemExpandLine = ({ column }) => html`
35
35
 
36
36
  customElements.define(
37
37
  'cosmoz-omnitable-item-expand-line',
38
- component(ItemExpandLine, {styleSheets: [sheet(style)]}),
38
+ component(ItemExpandLine, { styleSheets: [sheet(style)] }),
39
39
  );