@things-factory/organization 8.0.0-alpha.8 → 8.0.0-beta.1

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.
@@ -1,4 +1,8 @@
1
- import { registerEditor, registerRenderer } from '@operato/data-grist'
1
+ import { registerEditor, registerRenderer, registerFilterRenderer } from '@operato/data-grist'
2
+
3
+ import { FilterResourceCode } from '@operato/app/filters-form/filter-resource-code.js'
4
+ import { FilterResourceObject } from '@operato/app/filters-form/filter-resource-object.js'
5
+ import { FilterDepartmentObject } from './filters-form/filter-department-object.js'
2
6
 
3
7
  import { GristRendererDepartmentObject } from './grist-editor/grist-renderer-department-object'
4
8
  import { GristEditorDepartmentObject } from './grist-editor/grist-editor-department-object'
@@ -20,4 +24,9 @@ export default function bootstrap() {
20
24
  registerRenderer('approval-line', GristRendererApprovalLine)
21
25
  registerRenderer('assignees', GristRendererAssignees)
22
26
  registerRenderer('recipients', GristRendererRecipients)
27
+
28
+ registerFilterRenderer('code', [FilterResourceCode])
29
+ registerFilterRenderer('object', [FilterResourceObject])
30
+ registerFilterRenderer('resource-object', [FilterResourceObject])
31
+ registerFilterRenderer('department-object', [FilterDepartmentObject])
23
32
  }
@@ -0,0 +1,11 @@
1
+ import './ox-filter-department-object.js'
2
+
3
+ import { html } from 'lit-html'
4
+
5
+ import { FilterSelectRenderer } from '@operato/data-grist'
6
+
7
+ export const FilterDepartmentObject: FilterSelectRenderer = (column, value, owner) => {
8
+ return html`
9
+ <ox-filter-department-object name=${column?.name} .column=${column} .value=${value}></ox-filter-department-object>
10
+ `
11
+ }
@@ -0,0 +1,136 @@
1
+ import '../component/department-selector.js'
2
+
3
+ import { css, html, TemplateResult } from 'lit'
4
+ import { customElement, property, state } from 'lit/decorators.js'
5
+
6
+ import { i18next } from '@operato/i18n'
7
+ import { openPopup, PopupHandle } from '@operato/layout'
8
+ import { OxFormField } from '@operato/input'
9
+
10
+ @customElement('ox-filter-department-object')
11
+ export class OxFilterDepartmentObject extends OxFormField {
12
+ static styles = [
13
+ css`
14
+ :host {
15
+ display: block;
16
+ position: relative;
17
+ border-bottom: 1px solid rgba(0, 0, 0, 0.15);
18
+ min-width: 100px;
19
+
20
+ --ox-select-padding: var(--spacing-tiny);
21
+ --ox-select-font: var(--input-font);
22
+ --ox-select-color: var(--input-color, var(--md-sys-color-on-surface-variant));
23
+ --ox-select-icon-color: var(--theme-primary-text-color, var(--md-sys-color-on-surface-variant));
24
+ --ox-select-icon-hover-color: var(--md-sys-color-on-primary-container, #3c3938);
25
+ }
26
+
27
+ div {
28
+ width: 100%;
29
+ box-sizing: border-box;
30
+
31
+ display: flex;
32
+ flex-direction: row;
33
+ align-items: center;
34
+ justify-content: center;
35
+ cursor: pointer;
36
+ padding: var(--ox-select-padding);
37
+ font: var(--ox-select-font);
38
+ color: var(--ox-select-color);
39
+ }
40
+
41
+ span {
42
+ flex: 1;
43
+ overflow: hidden;
44
+ text-overflow: ellipsis;
45
+ white-space: nowrap;
46
+ gap: 4px;
47
+ }
48
+
49
+ md-icon {
50
+ --md-icon-size: 16px;
51
+ display: block;
52
+ text-align: right;
53
+ color: var(--ox-select-icon-color);
54
+ opacity: 0.7;
55
+ }
56
+
57
+ div:hover md-icon {
58
+ color: var(--md-sys-color-on-primary-container);
59
+ }
60
+ `
61
+ ]
62
+
63
+ @property({ type: Object }) column: any
64
+ @property({ type: String }) value?: string
65
+
66
+ @state() department?: any
67
+
68
+ private popup?: PopupHandle
69
+ private template?: TemplateResult
70
+
71
+ render() {
72
+ var { name, description } = this.department || (this.value ? { name: this.value } : {})
73
+
74
+ return html`
75
+ <div @click=${this._onclick} @keydown=${this._onkeydown}>
76
+ <span tabindex="0" style="flex:1">${name || ''}${(description && `(${description})`) || ''}</span>
77
+ <md-icon>search</md-icon>
78
+ </div>
79
+ `
80
+ }
81
+
82
+ _onclick(e: Event): void {
83
+ e.stopPropagation()
84
+ this.openSelector()
85
+ }
86
+
87
+ _onkeydown(e: KeyboardEvent): void {
88
+ const key = e.key
89
+ if (key == 'Enter') {
90
+ e.stopPropagation()
91
+ this.openSelector()
92
+ }
93
+ }
94
+
95
+ openSelector() {
96
+ if (this.popup) {
97
+ delete this.popup
98
+ }
99
+
100
+ const confirmCallback = (selected?: { [field: string]: any }) => {
101
+ this.department = selected
102
+ ? {
103
+ id: selected.id,
104
+ controlNo: selected.controlNo,
105
+ name: selected.name,
106
+ description: selected.description
107
+ }
108
+ : null
109
+
110
+ this.value = this.department?.name
111
+
112
+ this.dispatchEvent(
113
+ new CustomEvent('change', {
114
+ bubbles: true,
115
+ composed: true,
116
+ detail: this.value
117
+ })
118
+ )
119
+ }
120
+
121
+ var template =
122
+ this.template ||
123
+ html`
124
+ <department-selector
125
+ .value=${this.department || {}}
126
+ .confirmCallback=${confirmCallback.bind(this)}
127
+ ></department-selector>
128
+ `
129
+
130
+ this.popup = openPopup(template, {
131
+ backdrop: true,
132
+ size: 'large',
133
+ title: i18next.t('title.select_item')
134
+ })
135
+ }
136
+ }
@@ -1,4 +1,7 @@
1
- import { registerEditor, registerRenderer } from '@operato/data-grist';
1
+ import { registerEditor, registerRenderer, registerFilterRenderer } from '@operato/data-grist';
2
+ import { FilterResourceCode } from '@operato/app/filters-form/filter-resource-code.js';
3
+ import { FilterResourceObject } from '@operato/app/filters-form/filter-resource-object.js';
4
+ import { FilterDepartmentObject } from './filters-form/filter-department-object.js';
2
5
  import { GristRendererDepartmentObject } from './grist-editor/grist-renderer-department-object';
3
6
  import { GristEditorDepartmentObject } from './grist-editor/grist-editor-department-object';
4
7
  import { GristEditorAssignees } from './grist-editor/grist-editor-assignees';
@@ -17,5 +20,9 @@ export default function bootstrap() {
17
20
  registerRenderer('approval-line', GristRendererApprovalLine);
18
21
  registerRenderer('assignees', GristRendererAssignees);
19
22
  registerRenderer('recipients', GristRendererRecipients);
23
+ registerFilterRenderer('code', [FilterResourceCode]);
24
+ registerFilterRenderer('object', [FilterResourceObject]);
25
+ registerFilterRenderer('resource-object', [FilterResourceObject]);
26
+ registerFilterRenderer('department-object', [FilterDepartmentObject]);
20
27
  }
21
28
  //# sourceMappingURL=bootstrap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../client/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAA;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAA;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAA;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAA;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAA;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAA;AAEvF,MAAM,CAAC,OAAO,UAAU,SAAS;IAC/B,2CAA2C;IAC3C,cAAc,CAAC,mBAAmB,EAAE,2BAA2B,CAAC,CAAA;IAChE,cAAc,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAA;IACxD,cAAc,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAA;IACjD,cAAc,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAA;IAEnD,gBAAgB,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,CAAA;IACpE,gBAAgB,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAA;IAC5D,gBAAgB,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAA;IACrD,gBAAgB,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAA;AACzD,CAAC","sourcesContent":["import { registerEditor, registerRenderer } from '@operato/data-grist'\n\nimport { GristRendererDepartmentObject } from './grist-editor/grist-renderer-department-object'\nimport { GristEditorDepartmentObject } from './grist-editor/grist-editor-department-object'\nimport { GristEditorAssignees } from './grist-editor/grist-editor-assignees'\nimport { GristRendererAssignees } from './grist-editor/grist-renderer-assignees'\nimport { GristEditorRecipients } from './grist-editor/grist-editor-recipients'\nimport { GristRendererRecipients } from './grist-editor/grist-renderer-recipients'\nimport { GristEditorApprovalLine } from './grist-editor/grist-editor-approval-line'\nimport { GristRendererApprovalLine } from './grist-editor/grist-renderer-approval-line'\n\nexport default function bootstrap() {\n /* register grist renderer/editor for id */\n registerEditor('department-object', GristEditorDepartmentObject)\n registerEditor('approval-line', GristEditorApprovalLine)\n registerEditor('assignees', GristEditorAssignees)\n registerEditor('recipients', GristEditorRecipients)\n\n registerRenderer('department-object', GristRendererDepartmentObject)\n registerRenderer('approval-line', GristRendererApprovalLine)\n registerRenderer('assignees', GristRendererAssignees)\n registerRenderer('recipients', GristRendererRecipients)\n}\n"]}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../client/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAE9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAA;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAA;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAA;AAEnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAA;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAA;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAA;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAA;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAA;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAA;AAEvF,MAAM,CAAC,OAAO,UAAU,SAAS;IAC/B,2CAA2C;IAC3C,cAAc,CAAC,mBAAmB,EAAE,2BAA2B,CAAC,CAAA;IAChE,cAAc,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAA;IACxD,cAAc,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAA;IACjD,cAAc,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAA;IAEnD,gBAAgB,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,CAAA;IACpE,gBAAgB,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAA;IAC5D,gBAAgB,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAA;IACrD,gBAAgB,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAA;IAEvD,sBAAsB,CAAC,MAAM,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAA;IACpD,sBAAsB,CAAC,QAAQ,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAA;IACxD,sBAAsB,CAAC,iBAAiB,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAA;IACjE,sBAAsB,CAAC,mBAAmB,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAA;AACvE,CAAC","sourcesContent":["import { registerEditor, registerRenderer, registerFilterRenderer } from '@operato/data-grist'\n\nimport { FilterResourceCode } from '@operato/app/filters-form/filter-resource-code.js'\nimport { FilterResourceObject } from '@operato/app/filters-form/filter-resource-object.js'\nimport { FilterDepartmentObject } from './filters-form/filter-department-object.js'\n\nimport { GristRendererDepartmentObject } from './grist-editor/grist-renderer-department-object'\nimport { GristEditorDepartmentObject } from './grist-editor/grist-editor-department-object'\nimport { GristEditorAssignees } from './grist-editor/grist-editor-assignees'\nimport { GristRendererAssignees } from './grist-editor/grist-renderer-assignees'\nimport { GristEditorRecipients } from './grist-editor/grist-editor-recipients'\nimport { GristRendererRecipients } from './grist-editor/grist-renderer-recipients'\nimport { GristEditorApprovalLine } from './grist-editor/grist-editor-approval-line'\nimport { GristRendererApprovalLine } from './grist-editor/grist-renderer-approval-line'\n\nexport default function bootstrap() {\n /* register grist renderer/editor for id */\n registerEditor('department-object', GristEditorDepartmentObject)\n registerEditor('approval-line', GristEditorApprovalLine)\n registerEditor('assignees', GristEditorAssignees)\n registerEditor('recipients', GristEditorRecipients)\n\n registerRenderer('department-object', GristRendererDepartmentObject)\n registerRenderer('approval-line', GristRendererApprovalLine)\n registerRenderer('assignees', GristRendererAssignees)\n registerRenderer('recipients', GristRendererRecipients)\n\n registerFilterRenderer('code', [FilterResourceCode])\n registerFilterRenderer('object', [FilterResourceObject])\n registerFilterRenderer('resource-object', [FilterResourceObject])\n registerFilterRenderer('department-object', [FilterDepartmentObject])\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import './ox-filter-department-object.js';
2
+ import { FilterSelectRenderer } from '@operato/data-grist';
3
+ export declare const FilterDepartmentObject: FilterSelectRenderer;
@@ -0,0 +1,8 @@
1
+ import './ox-filter-department-object.js';
2
+ import { html } from 'lit-html';
3
+ export const FilterDepartmentObject = (column, value, owner) => {
4
+ return html `
5
+ <ox-filter-department-object name=${column === null || column === void 0 ? void 0 : column.name} .column=${column} .value=${value}></ox-filter-department-object>
6
+ `;
7
+ };
8
+ //# sourceMappingURL=filter-department-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-department-object.js","sourceRoot":"","sources":["../../client/filters-form/filter-department-object.ts"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAA;AAEzC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAI/B,MAAM,CAAC,MAAM,sBAAsB,GAAyB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IACnF,OAAO,IAAI,CAAA;wCAC2B,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,YAAY,MAAM,WAAW,KAAK;GACnF,CAAA;AACH,CAAC,CAAA","sourcesContent":["import './ox-filter-department-object.js'\n\nimport { html } from 'lit-html'\n\nimport { FilterSelectRenderer } from '@operato/data-grist'\n\nexport const FilterDepartmentObject: FilterSelectRenderer = (column, value, owner) => {\n return html`\n <ox-filter-department-object name=${column?.name} .column=${column} .value=${value}></ox-filter-department-object>\n `\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import '../component/department-selector.js';
2
+ import { TemplateResult } from 'lit';
3
+ import { OxFormField } from '@operato/input';
4
+ export declare class OxFilterDepartmentObject extends OxFormField {
5
+ static styles: import("lit").CSSResult[];
6
+ column: any;
7
+ value?: string;
8
+ department?: any;
9
+ private popup?;
10
+ private template?;
11
+ render(): TemplateResult<1>;
12
+ _onclick(e: Event): void;
13
+ _onkeydown(e: KeyboardEvent): void;
14
+ openSelector(): void;
15
+ }
@@ -0,0 +1,130 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import '../component/department-selector.js';
3
+ import { css, html } from 'lit';
4
+ import { customElement, property, state } from 'lit/decorators.js';
5
+ import { i18next } from '@operato/i18n';
6
+ import { openPopup } from '@operato/layout';
7
+ import { OxFormField } from '@operato/input';
8
+ let OxFilterDepartmentObject = class OxFilterDepartmentObject extends OxFormField {
9
+ render() {
10
+ var { name, description } = this.department || (this.value ? { name: this.value } : {});
11
+ return html `
12
+ <div @click=${this._onclick} @keydown=${this._onkeydown}>
13
+ <span tabindex="0" style="flex:1">${name || ''}${(description && `(${description})`) || ''}</span>
14
+ <md-icon>search</md-icon>
15
+ </div>
16
+ `;
17
+ }
18
+ _onclick(e) {
19
+ e.stopPropagation();
20
+ this.openSelector();
21
+ }
22
+ _onkeydown(e) {
23
+ const key = e.key;
24
+ if (key == 'Enter') {
25
+ e.stopPropagation();
26
+ this.openSelector();
27
+ }
28
+ }
29
+ openSelector() {
30
+ if (this.popup) {
31
+ delete this.popup;
32
+ }
33
+ const confirmCallback = (selected) => {
34
+ var _a;
35
+ this.department = selected
36
+ ? {
37
+ id: selected.id,
38
+ controlNo: selected.controlNo,
39
+ name: selected.name,
40
+ description: selected.description
41
+ }
42
+ : null;
43
+ this.value = (_a = this.department) === null || _a === void 0 ? void 0 : _a.name;
44
+ this.dispatchEvent(new CustomEvent('change', {
45
+ bubbles: true,
46
+ composed: true,
47
+ detail: this.value
48
+ }));
49
+ };
50
+ var template = this.template ||
51
+ html `
52
+ <department-selector
53
+ .value=${this.department || {}}
54
+ .confirmCallback=${confirmCallback.bind(this)}
55
+ ></department-selector>
56
+ `;
57
+ this.popup = openPopup(template, {
58
+ backdrop: true,
59
+ size: 'large',
60
+ title: i18next.t('title.select_item')
61
+ });
62
+ }
63
+ };
64
+ OxFilterDepartmentObject.styles = [
65
+ css `
66
+ :host {
67
+ display: block;
68
+ position: relative;
69
+ border-bottom: 1px solid rgba(0, 0, 0, 0.15);
70
+ min-width: 100px;
71
+
72
+ --ox-select-padding: var(--spacing-tiny);
73
+ --ox-select-font: var(--input-font);
74
+ --ox-select-color: var(--input-color, var(--md-sys-color-on-surface-variant));
75
+ --ox-select-icon-color: var(--theme-primary-text-color, var(--md-sys-color-on-surface-variant));
76
+ --ox-select-icon-hover-color: var(--md-sys-color-on-primary-container, #3c3938);
77
+ }
78
+
79
+ div {
80
+ width: 100%;
81
+ box-sizing: border-box;
82
+
83
+ display: flex;
84
+ flex-direction: row;
85
+ align-items: center;
86
+ justify-content: center;
87
+ cursor: pointer;
88
+ padding: var(--ox-select-padding);
89
+ font: var(--ox-select-font);
90
+ color: var(--ox-select-color);
91
+ }
92
+
93
+ span {
94
+ flex: 1;
95
+ overflow: hidden;
96
+ text-overflow: ellipsis;
97
+ white-space: nowrap;
98
+ gap: 4px;
99
+ }
100
+
101
+ md-icon {
102
+ --md-icon-size: 16px;
103
+ display: block;
104
+ text-align: right;
105
+ color: var(--ox-select-icon-color);
106
+ opacity: 0.7;
107
+ }
108
+
109
+ div:hover md-icon {
110
+ color: var(--md-sys-color-on-primary-container);
111
+ }
112
+ `
113
+ ];
114
+ __decorate([
115
+ property({ type: Object }),
116
+ __metadata("design:type", Object)
117
+ ], OxFilterDepartmentObject.prototype, "column", void 0);
118
+ __decorate([
119
+ property({ type: String }),
120
+ __metadata("design:type", String)
121
+ ], OxFilterDepartmentObject.prototype, "value", void 0);
122
+ __decorate([
123
+ state(),
124
+ __metadata("design:type", Object)
125
+ ], OxFilterDepartmentObject.prototype, "department", void 0);
126
+ OxFilterDepartmentObject = __decorate([
127
+ customElement('ox-filter-department-object')
128
+ ], OxFilterDepartmentObject);
129
+ export { OxFilterDepartmentObject };
130
+ //# sourceMappingURL=ox-filter-department-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ox-filter-department-object.js","sourceRoot":"","sources":["../../client/filters-form/ox-filter-department-object.ts"],"names":[],"mappings":"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","sourcesContent":["import '../component/department-selector.js'\n\nimport { css, html, TemplateResult } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport { i18next } from '@operato/i18n'\nimport { openPopup, PopupHandle } from '@operato/layout'\nimport { OxFormField } from '@operato/input'\n\n@customElement('ox-filter-department-object')\nexport class OxFilterDepartmentObject extends OxFormField {\n static styles = [\n css`\n :host {\n display: block;\n position: relative;\n border-bottom: 1px solid rgba(0, 0, 0, 0.15);\n min-width: 100px;\n\n --ox-select-padding: var(--spacing-tiny);\n --ox-select-font: var(--input-font);\n --ox-select-color: var(--input-color, var(--md-sys-color-on-surface-variant));\n --ox-select-icon-color: var(--theme-primary-text-color, var(--md-sys-color-on-surface-variant));\n --ox-select-icon-hover-color: var(--md-sys-color-on-primary-container, #3c3938);\n }\n\n div {\n width: 100%;\n box-sizing: border-box;\n\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n padding: var(--ox-select-padding);\n font: var(--ox-select-font);\n color: var(--ox-select-color);\n }\n\n span {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n gap: 4px;\n }\n\n md-icon {\n --md-icon-size: 16px;\n display: block;\n text-align: right;\n color: var(--ox-select-icon-color);\n opacity: 0.7;\n }\n\n div:hover md-icon {\n color: var(--md-sys-color-on-primary-container);\n }\n `\n ]\n\n @property({ type: Object }) column: any\n @property({ type: String }) value?: string\n\n @state() department?: any\n\n private popup?: PopupHandle\n private template?: TemplateResult\n\n render() {\n var { name, description } = this.department || (this.value ? { name: this.value } : {})\n\n return html`\n <div @click=${this._onclick} @keydown=${this._onkeydown}>\n <span tabindex=\"0\" style=\"flex:1\">${name || ''}${(description && `(${description})`) || ''}</span>\n <md-icon>search</md-icon>\n </div>\n `\n }\n\n _onclick(e: Event): void {\n e.stopPropagation()\n this.openSelector()\n }\n\n _onkeydown(e: KeyboardEvent): void {\n const key = e.key\n if (key == 'Enter') {\n e.stopPropagation()\n this.openSelector()\n }\n }\n\n openSelector() {\n if (this.popup) {\n delete this.popup\n }\n\n const confirmCallback = (selected?: { [field: string]: any }) => {\n this.department = selected\n ? {\n id: selected.id,\n controlNo: selected.controlNo,\n name: selected.name,\n description: selected.description\n }\n : null\n\n this.value = this.department?.name\n\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n composed: true,\n detail: this.value\n })\n )\n }\n\n var template =\n this.template ||\n html`\n <department-selector\n .value=${this.department || {}}\n .confirmCallback=${confirmCallback.bind(this)}\n ></department-selector>\n `\n\n this.popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n title: i18next.t('title.select_item')\n })\n }\n}\n"]}