@operato/board 1.5.16 → 1.5.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,23 @@
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
+ ### [1.5.18](https://github.com/hatiolab/operato/compare/v1.5.17...v1.5.18) (2023-11-02)
7
+
8
+
9
+ ### :bug: Bug Fix
10
+
11
+ * board creation with templates ([0635e25](https://github.com/hatiolab/operato/commit/0635e2599ad69c3f48be2af52ed7ed9133aa887c))
12
+
13
+
14
+
15
+ ### [1.5.17](https://github.com/hatiolab/operato/compare/v1.5.16...v1.5.17) (2023-11-01)
16
+
17
+ **Note:** Version bump only for package @operato/board
18
+
19
+
20
+
21
+
22
+
6
23
  ### [1.5.16](https://github.com/hatiolab/operato/compare/v1.5.15...v1.5.16) (2023-11-01)
7
24
 
8
25
  **Note:** Version bump only for package @operato/board
@@ -0,0 +1,108 @@
1
+ import '@operato/data-grist';
2
+ import '@operato/input/ox-input-file.js';
3
+ import { LitElement } from 'lit';
4
+ import { DataGrist, FetchOption, FilterValue, SortersConfig } from '@operato/data-grist';
5
+ export declare class OxBoardTemplateList extends LitElement {
6
+ static styles: import("lit").CSSResult[];
7
+ withoutSearch: boolean;
8
+ grist: DataGrist;
9
+ render(): import("lit-html").TemplateResult<1>;
10
+ fetchHandler({ page, limit, sortings, filters }: FetchOption): Promise<{
11
+ total: any;
12
+ records: any;
13
+ }>;
14
+ get gristConfig(): {
15
+ list: {
16
+ thumbnail: string;
17
+ fields: string[];
18
+ details: string[];
19
+ };
20
+ columns: ({
21
+ type: string;
22
+ name: string;
23
+ hidden: boolean;
24
+ header?: undefined;
25
+ record?: undefined;
26
+ width?: undefined;
27
+ filter?: undefined;
28
+ sortable?: undefined;
29
+ } | {
30
+ type: string;
31
+ name: string;
32
+ header: string;
33
+ record: {
34
+ editable: boolean;
35
+ align: string;
36
+ };
37
+ width: number;
38
+ filter: string;
39
+ sortable: boolean;
40
+ hidden?: undefined;
41
+ } | {
42
+ type: string;
43
+ name: string;
44
+ header: string;
45
+ record: {
46
+ editable: boolean;
47
+ align: string;
48
+ };
49
+ width: number;
50
+ filter: string;
51
+ hidden?: undefined;
52
+ sortable?: undefined;
53
+ } | {
54
+ type: string;
55
+ name: string;
56
+ header: string;
57
+ record: {
58
+ editable: boolean;
59
+ align?: undefined;
60
+ };
61
+ hidden: boolean;
62
+ filter: {
63
+ operator: string;
64
+ options: string[];
65
+ label: string;
66
+ };
67
+ width?: undefined;
68
+ sortable?: undefined;
69
+ } | {
70
+ type: string;
71
+ name: string;
72
+ hidden: boolean;
73
+ record: {
74
+ editable: boolean;
75
+ align?: undefined;
76
+ };
77
+ header?: undefined;
78
+ width?: undefined;
79
+ filter?: undefined;
80
+ sortable?: undefined;
81
+ })[];
82
+ rows: {
83
+ appendable: boolean;
84
+ selectable: {
85
+ multiple: boolean;
86
+ };
87
+ handlers: {
88
+ click: string;
89
+ };
90
+ };
91
+ sorters: {
92
+ name: string;
93
+ desc: boolean;
94
+ }[];
95
+ pagination: {
96
+ pages: number[];
97
+ };
98
+ };
99
+ firstUpdated(): Promise<void>;
100
+ getSelected(): Promise<any>;
101
+ refreshBoardTemplates(): Promise<void>;
102
+ getBoardTemplates({ page, limit, filters, sortings }?: {
103
+ page?: number;
104
+ limit?: number;
105
+ filters?: FilterValue[];
106
+ sortings?: SortersConfig;
107
+ }): Promise<any>;
108
+ }
@@ -0,0 +1,242 @@
1
+ import { __decorate } from "tslib";
2
+ import '@operato/data-grist';
3
+ import '@operato/input/ox-input-file.js';
4
+ import gql from 'graphql-tag';
5
+ import { css, html, LitElement } from 'lit';
6
+ import { customElement, property, query } from 'lit/decorators.js';
7
+ import { buildArgs, client } from '@operato/graphql';
8
+ import { ScrollbarStyles, TooltipStyles } from '@operato/styles';
9
+ const FETCH_BOARD_TEMPLATE_LIST_GQL = (listParam) => {
10
+ return gql `
11
+ {
12
+ boardTemplates(${buildArgs(listParam)}) {
13
+ items {
14
+ id
15
+ name
16
+ description
17
+ visibility
18
+ thumbnail
19
+ }
20
+ total
21
+ }
22
+ }
23
+ `;
24
+ };
25
+ const FETCH_BOARD_TEMPLATE_GQL = (id) => {
26
+ return gql `
27
+ {
28
+ boardTemplate(id: "${id}") {
29
+ id
30
+ name
31
+ description
32
+ visibility
33
+ model
34
+ thumbnail
35
+ }
36
+ }
37
+ `;
38
+ };
39
+ let OxBoardTemplateList = class OxBoardTemplateList extends LitElement {
40
+ constructor() {
41
+ super(...arguments);
42
+ this.withoutSearch = false;
43
+ }
44
+ render() {
45
+ return html `
46
+ <ox-grist .config=${this.gristConfig} .mode=${'CARD'} auto-fetch .fetchHandler=${this.fetchHandler.bind(this)}>
47
+ <div slot="headroom" id="headroom">
48
+ <div id="filters">
49
+ <ox-filters-form autofocus .withoutSearch=${this.withoutSearch}></ox-filters-form>
50
+ </div>
51
+ </div>
52
+ </ox-grist>
53
+ `;
54
+ }
55
+ async fetchHandler({ page = 1, limit = 100, sortings = [], filters = [] }) {
56
+ const { items: records, total } = await this.getBoardTemplates({ page, limit, filters, sortings });
57
+ return {
58
+ total,
59
+ records
60
+ };
61
+ }
62
+ get gristConfig() {
63
+ return {
64
+ list: {
65
+ thumbnail: 'thumbnail',
66
+ fields: ['name'],
67
+ details: ['description']
68
+ },
69
+ columns: [
70
+ {
71
+ type: 'string',
72
+ name: 'id',
73
+ hidden: true
74
+ },
75
+ {
76
+ type: 'string',
77
+ name: 'name',
78
+ header: 'name',
79
+ record: {
80
+ editable: true,
81
+ align: 'left'
82
+ },
83
+ width: 200,
84
+ filter: 'search',
85
+ sortable: true
86
+ },
87
+ {
88
+ type: 'string',
89
+ name: 'description',
90
+ header: 'description',
91
+ record: {
92
+ editable: true,
93
+ align: 'left'
94
+ },
95
+ width: 200,
96
+ filter: 'search'
97
+ },
98
+ {
99
+ type: 'select-buttons',
100
+ name: 'visibility',
101
+ header: 'visibility',
102
+ record: {
103
+ editable: false
104
+ },
105
+ hidden: true,
106
+ filter: {
107
+ operator: 'in',
108
+ options: ['private', 'domain', 'public'],
109
+ label: ''
110
+ }
111
+ },
112
+ {
113
+ type: 'image',
114
+ name: 'thumbnail',
115
+ hidden: true,
116
+ record: {
117
+ editable: false
118
+ }
119
+ }
120
+ ],
121
+ rows: {
122
+ appendable: false,
123
+ selectable: {
124
+ multiple: false
125
+ },
126
+ handlers: {
127
+ click: 'select-row-toggle'
128
+ }
129
+ },
130
+ sorters: [
131
+ {
132
+ name: 'name',
133
+ desc: false
134
+ }
135
+ ],
136
+ pagination: {
137
+ pages: [20, 30, 50, 100, 200]
138
+ }
139
+ };
140
+ }
141
+ async firstUpdated() {
142
+ this.refreshBoardTemplates();
143
+ }
144
+ async getSelected() {
145
+ var _a, _b;
146
+ const selected = this.grist.selected;
147
+ const templateId = selected && ((_a = selected[0]) === null || _a === void 0 ? void 0 : _a.id);
148
+ if (!templateId) {
149
+ return;
150
+ }
151
+ var boardTemplateResponse = await client.query({
152
+ query: FETCH_BOARD_TEMPLATE_GQL(templateId)
153
+ });
154
+ var template = (_b = boardTemplateResponse.data) === null || _b === void 0 ? void 0 : _b.boardTemplate;
155
+ if (template) {
156
+ template = {
157
+ ...template,
158
+ model: JSON.parse(template.model)
159
+ };
160
+ }
161
+ return template;
162
+ }
163
+ async refreshBoardTemplates() {
164
+ this.grist.fetch();
165
+ }
166
+ async getBoardTemplates({ page = 1, limit = 30, filters = [], sortings = [] } = {}) {
167
+ var _a;
168
+ var pagination = {
169
+ limit,
170
+ page
171
+ };
172
+ var params = {
173
+ filters,
174
+ sortings,
175
+ pagination
176
+ };
177
+ var boardTemplateListResponse = await client.query({
178
+ query: FETCH_BOARD_TEMPLATE_LIST_GQL(params)
179
+ });
180
+ return ((_a = boardTemplateListResponse === null || boardTemplateListResponse === void 0 ? void 0 : boardTemplateListResponse.data) === null || _a === void 0 ? void 0 : _a.boardTemplates) || {};
181
+ }
182
+ };
183
+ OxBoardTemplateList.styles = [
184
+ ScrollbarStyles,
185
+ TooltipStyles,
186
+ css `
187
+ :host {
188
+ display: flex;
189
+
190
+ width: 100%;
191
+
192
+ --grid-record-emphasized-background-color: red;
193
+ --grid-record-emphasized-color: yellow;
194
+ }
195
+
196
+ ox-grist {
197
+ flex: 1;
198
+ overflow-y: auto;
199
+
200
+ --grid-record-emphasized-background-color: red;
201
+ --grid-record-emphasized-color: yellow;
202
+ }
203
+
204
+ #headroom {
205
+ align-items: center;
206
+ padding: var(--padding-default) var(--padding-wide);
207
+ border-top: 2px solid rgba(0, 0, 0, 0.2);
208
+ background-color: var(--theme-white-color);
209
+ box-shadow: var(--box-shadow);
210
+ }
211
+
212
+ #filters {
213
+ display: flex;
214
+ flex-direction: row;
215
+ place-content: space-between;
216
+ margin: var(--margin-default) 0;
217
+ }
218
+
219
+ select {
220
+ border: 0;
221
+ outline: none;
222
+ text-align: right;
223
+ }
224
+
225
+ @media only screen and (max-width: 460px) {
226
+ #filters {
227
+ flex-direction: column;
228
+ }
229
+ }
230
+ `
231
+ ];
232
+ __decorate([
233
+ property({ type: Boolean, attribute: 'without-search' })
234
+ ], OxBoardTemplateList.prototype, "withoutSearch", void 0);
235
+ __decorate([
236
+ query('ox-grist')
237
+ ], OxBoardTemplateList.prototype, "grist", void 0);
238
+ OxBoardTemplateList = __decorate([
239
+ customElement('ox-board-template-list')
240
+ ], OxBoardTemplateList);
241
+ export { OxBoardTemplateList };
242
+ //# sourceMappingURL=ox-board-template-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ox-board-template-list.js","sourceRoot":"","sources":["../../src/ox-board-template-list.ts"],"names":[],"mappings":";AAAA,OAAO,qBAAqB,CAAA;AAC5B,OAAO,iCAAiC,CAAA;AAExC,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAS,MAAM,mBAAmB,CAAA;AAYzE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEhE,MAAM,6BAA6B,GAAG,CAAC,SAAc,EAAE,EAAE;IACvD,OAAO,GAAG,CAAA;;qBAES,SAAS,CAAC,SAAS,CAAC;;;;;;;;;;;CAWxC,CAAA;AACD,CAAC,CAAA;AAED,MAAM,wBAAwB,GAAG,CAAC,EAAU,EAAE,EAAE;IAC9C,OAAO,GAAG,CAAA;;yBAEa,EAAE;;;;;;;;;CAS1B,CAAA;AACD,CAAC,CAAA;AAGM,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,UAAU;IAA5C;;QAmDqD,kBAAa,GAAY,KAAK,CAAA;IAgK1F,CAAC;IA5JC,MAAM;QACJ,OAAO,IAAI,CAAA;0BACW,IAAI,CAAC,WAAW,UAAU,MAAM,6BAA6B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;;wDAG3D,IAAI,CAAC,aAAa;;;;KAIrE,CAAA;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,QAAQ,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAe;QACpF,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAA;QAElG,OAAO;YACL,KAAK;YACL,OAAO;SACR,CAAA;IACH,CAAC;IAED,IAAI,WAAW;QACb,OAAO;YACL,IAAI,EAAE;gBACJ,SAAS,EAAE,WAAW;gBACtB,MAAM,EAAE,CAAC,MAAM,CAAC;gBAChB,OAAO,EAAE,CAAC,aAAa,CAAC;aACzB;YACD,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,IAAI;oBACV,MAAM,EAAE,IAAI;iBACb;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,MAAM;qBACd;oBACD,KAAK,EAAE,GAAG;oBACV,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,IAAI;iBACf;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,aAAa;oBACrB,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,MAAM;qBACd;oBACD,KAAK,EAAE,GAAG;oBACV,MAAM,EAAE,QAAQ;iBACjB;gBACD;oBACE,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,YAAY;oBAClB,MAAM,EAAE,YAAY;oBACpB,MAAM,EAAE;wBACN,QAAQ,EAAE,KAAK;qBAChB;oBACD,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;wBACd,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;wBACxC,KAAK,EAAE,EAAE;qBACV;iBACF;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,WAAW;oBACjB,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE;wBACN,QAAQ,EAAE,KAAK;qBAChB;iBACF;aACF;YACD,IAAI,EAAE;gBACJ,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE;oBACV,QAAQ,EAAE,KAAK;iBAChB;gBACD,QAAQ,EAAE;oBACR,KAAK,EAAE,mBAAmB;iBAC3B;aACF;YACD,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,KAAK;iBACZ;aACF;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;aAC9B;SACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,WAAW;;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA;QACpC,MAAM,UAAU,GAAG,QAAQ,KAAI,MAAA,QAAQ,CAAC,CAAC,CAAC,0CAAE,EAAE,CAAA,CAAA;QAE9C,IAAI,CAAC,UAAU,EAAE;YACf,OAAM;SACP;QAED,IAAI,qBAAqB,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;YAC7C,KAAK,EAAE,wBAAwB,CAAC,UAAU,CAAC;SAC5C,CAAC,CAAA;QAEF,IAAI,QAAQ,GAAG,MAAA,qBAAqB,CAAC,IAAI,0CAAE,aAAa,CAAA;QAExD,IAAI,QAAQ,EAAE;YACZ,QAAQ,GAAG;gBACT,GAAG,QAAQ;gBACX,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;aAClC,CAAA;SACF;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,EACtB,IAAI,GAAG,CAAC,EACR,KAAK,GAAG,EAAE,EACV,OAAO,GAAG,EAAE,EACZ,QAAQ,GAAG,EAAE,KAC2E,EAAE;;QAC1F,IAAI,UAAU,GAAqB;YACjC,KAAK;YACL,IAAI;SACL,CAAA;QAED,IAAI,MAAM,GAAG;YACX,OAAO;YACP,QAAQ;YACR,UAAU;SACX,CAAA;QAED,IAAI,yBAAyB,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;YACjD,KAAK,EAAE,6BAA6B,CAAC,MAAM,CAAC;SAC7C,CAAC,CAAA;QAEF,OAAO,CAAA,MAAA,yBAAyB,aAAzB,yBAAyB,uBAAzB,yBAAyB,CAAE,IAAI,0CAAE,cAAc,KAAI,EAAE,CAAA;IAC9D,CAAC;;AAjNM,0BAAM,GAAG;IACd,eAAe;IACf,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4CF;CACF,AAhDY,CAgDZ;AAEyD;IAAzD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;0DAA+B;AAErE;IAAlB,KAAK,CAAC,UAAU,CAAC;kDAAkB;AArDzB,mBAAmB;IAD/B,aAAa,CAAC,wBAAwB,CAAC;GAC3B,mBAAmB,CAmN/B","sourcesContent":["import '@operato/data-grist'\nimport '@operato/input/ox-input-file.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\n\nimport {\n ColumnConfig,\n DataGrist,\n FetchOption,\n FilterValue,\n GristData,\n GristRecord,\n PaginationConfig,\n SortersConfig\n} from '@operato/data-grist'\nimport { buildArgs, client } from '@operato/graphql'\nimport { ScrollbarStyles, TooltipStyles } from '@operato/styles'\n\nconst FETCH_BOARD_TEMPLATE_LIST_GQL = (listParam: any) => {\n return gql`\n {\n boardTemplates(${buildArgs(listParam)}) {\n items {\n id\n name\n description\n visibility\n thumbnail\n }\n total\n }\n }\n`\n}\n\nconst FETCH_BOARD_TEMPLATE_GQL = (id: string) => {\n return gql`\n {\n boardTemplate(id: \"${id}\") {\n id\n name\n description\n visibility\n model\n thumbnail\n }\n }\n`\n}\n\n@customElement('ox-board-template-list')\nexport class OxBoardTemplateList extends LitElement {\n static styles = [\n ScrollbarStyles,\n TooltipStyles,\n css`\n :host {\n display: flex;\n\n width: 100%;\n\n --grid-record-emphasized-background-color: red;\n --grid-record-emphasized-color: yellow;\n }\n\n ox-grist {\n flex: 1;\n overflow-y: auto;\n\n --grid-record-emphasized-background-color: red;\n --grid-record-emphasized-color: yellow;\n }\n\n #headroom {\n align-items: center;\n padding: var(--padding-default) var(--padding-wide);\n border-top: 2px solid rgba(0, 0, 0, 0.2);\n background-color: var(--theme-white-color);\n box-shadow: var(--box-shadow);\n }\n\n #filters {\n display: flex;\n flex-direction: row;\n place-content: space-between;\n margin: var(--margin-default) 0;\n }\n\n select {\n border: 0;\n outline: none;\n text-align: right;\n }\n\n @media only screen and (max-width: 460px) {\n #filters {\n flex-direction: column;\n }\n }\n `\n ]\n\n @property({ type: Boolean, attribute: 'without-search' }) withoutSearch: boolean = false\n\n @query('ox-grist') grist!: DataGrist\n\n render() {\n return html`\n <ox-grist .config=${this.gristConfig} .mode=${'CARD'} auto-fetch .fetchHandler=${this.fetchHandler.bind(this)}>\n <div slot=\"headroom\" id=\"headroom\">\n <div id=\"filters\">\n <ox-filters-form autofocus .withoutSearch=${this.withoutSearch}></ox-filters-form>\n </div>\n </div>\n </ox-grist>\n `\n }\n\n async fetchHandler({ page = 1, limit = 100, sortings = [], filters = [] }: FetchOption) {\n const { items: records, total } = await this.getBoardTemplates({ page, limit, filters, sortings })\n\n return {\n total,\n records\n }\n }\n\n get gristConfig() {\n return {\n list: {\n thumbnail: 'thumbnail',\n fields: ['name'],\n details: ['description']\n },\n columns: [\n {\n type: 'string',\n name: 'id',\n hidden: true\n },\n {\n type: 'string',\n name: 'name',\n header: 'name',\n record: {\n editable: true,\n align: 'left'\n },\n width: 200,\n filter: 'search',\n sortable: true\n },\n {\n type: 'string',\n name: 'description',\n header: 'description',\n record: {\n editable: true,\n align: 'left'\n },\n width: 200,\n filter: 'search'\n },\n {\n type: 'select-buttons',\n name: 'visibility',\n header: 'visibility',\n record: {\n editable: false\n },\n hidden: true,\n filter: {\n operator: 'in',\n options: ['private', 'domain', 'public'],\n label: ''\n }\n },\n {\n type: 'image',\n name: 'thumbnail',\n hidden: true,\n record: {\n editable: false\n }\n }\n ],\n rows: {\n appendable: false,\n selectable: {\n multiple: false\n },\n handlers: {\n click: 'select-row-toggle'\n }\n },\n sorters: [\n {\n name: 'name',\n desc: false\n }\n ],\n pagination: {\n pages: [20, 30, 50, 100, 200]\n }\n }\n }\n\n async firstUpdated() {\n this.refreshBoardTemplates()\n }\n\n async getSelected() {\n const selected = this.grist.selected\n const templateId = selected && selected[0]?.id\n\n if (!templateId) {\n return\n }\n\n var boardTemplateResponse = await client.query({\n query: FETCH_BOARD_TEMPLATE_GQL(templateId)\n })\n\n var template = boardTemplateResponse.data?.boardTemplate\n\n if (template) {\n template = {\n ...template,\n model: JSON.parse(template.model)\n }\n }\n\n return template\n }\n\n async refreshBoardTemplates() {\n this.grist.fetch()\n }\n\n async getBoardTemplates({\n page = 1,\n limit = 30,\n filters = [],\n sortings = []\n }: { page?: number; limit?: number; filters?: FilterValue[]; sortings?: SortersConfig } = {}) {\n var pagination: PaginationConfig = {\n limit,\n page\n }\n\n var params = {\n filters,\n sortings,\n pagination\n }\n\n var boardTemplateListResponse = await client.query({\n query: FETCH_BOARD_TEMPLATE_LIST_GQL(params)\n })\n\n return boardTemplateListResponse?.data?.boardTemplates || {}\n }\n}\n"]}
@@ -3,7 +3,9 @@ import '@material/mwc-textarea';
3
3
  import '@material/mwc-select';
4
4
  import '@material/mwc-list/mwc-list-item';
5
5
  import '@material/mwc-button';
6
+ import '../ox-board-template-list';
6
7
  import { LitElement } from 'lit';
8
+ import { OxBoardTemplateList } from '../ox-board-template-list';
7
9
  declare const BoardCreationPopup_base: (new (...args: any[]) => LitElement) & typeof LitElement;
8
10
  export declare class BoardCreationPopup extends BoardCreationPopup_base {
9
11
  static get styles(): import("lit").CSSResult[];
@@ -12,8 +14,9 @@ export declare class BoardCreationPopup extends BoardCreationPopup_base {
12
14
  id: string;
13
15
  name: string;
14
16
  }[];
17
+ boardTemplateList: OxBoardTemplateList;
15
18
  render(): import("lit-html").TemplateResult<1>;
16
19
  firstUpdated(): void;
17
- onClickSubmit(): void;
20
+ onClickSubmit(): Promise<void>;
18
21
  }
19
22
  export {};
@@ -4,8 +4,9 @@ import '@material/mwc-textarea';
4
4
  import '@material/mwc-select';
5
5
  import '@material/mwc-list/mwc-list-item';
6
6
  import '@material/mwc-button';
7
+ import '../ox-board-template-list';
7
8
  import { css, html, LitElement } from 'lit';
8
- import { customElement, property } from 'lit/decorators.js';
9
+ import { customElement, property, query } from 'lit/decorators.js';
9
10
  import { i18next, localize } from '@operato/i18n';
10
11
  let BoardCreationPopup = class BoardCreationPopup extends localize(i18next)(LitElement) {
11
12
  static get styles() {
@@ -14,24 +15,46 @@ let BoardCreationPopup = class BoardCreationPopup extends localize(i18next)(LitE
14
15
  :host {
15
16
  display: flex;
16
17
  flex-direction: column;
17
-
18
+ gap: 10px;
18
19
  padding: 10px;
20
+
19
21
  background-color: white;
20
22
  }
21
23
 
22
- :host > * {
23
- margin: 10px;
24
+ [body] {
25
+ flex: 1;
26
+
27
+ display: flex;
28
+ flex-direction: row;
29
+ gap: 10px;
30
+
31
+ overflow: hidden;
24
32
  }
25
33
 
26
34
  [content] {
27
35
  flex: 1;
36
+
28
37
  display: flex;
29
38
  flex-direction: column;
39
+ gap: 10px;
40
+
30
41
  overflow: auto;
31
42
  }
32
43
 
33
- [content] > * {
34
- margin: 10px 0;
44
+ [content] > mwc-textarea {
45
+ flex: 1;
46
+ }
47
+
48
+ [templates] {
49
+ flex: 2;
50
+ display: flex;
51
+ flex-direction: column;
52
+ overflow: hidden;
53
+ }
54
+
55
+ [templates] > ox-board-template-list {
56
+ flex: 1;
57
+ overflow: hidden;
35
58
  }
36
59
  `
37
60
  ];
@@ -39,22 +62,31 @@ let BoardCreationPopup = class BoardCreationPopup extends localize(i18next)(LitE
39
62
  render() {
40
63
  var groups = this.groups || [];
41
64
  return html `
42
- <div content>
43
- <mwc-textfield label=${String(i18next.t('label.name'))} name="name" required field-name></mwc-textfield>
44
- <mwc-textarea
45
- label=${String(i18next.t('label.description'))}
46
- name="description"
47
- field-description
48
- ></mwc-textarea>
49
- <mwc-select
50
- label=${String(i18next.t('label.group'))}
51
- field-group
52
- helper="If there is no group to choose, you can leave it empty."
53
- >
54
- ${groups.map(group => html `
55
- <mwc-list-item value=${group.id} ?selected=${this.defaultGroup == group.id}>${group.name}</mwc-list-item>
56
- `)}
57
- </mwc-select>
65
+ <div body>
66
+ <div content>
67
+ <mwc-textfield label=${String(i18next.t('label.name'))} name="name" required field-name></mwc-textfield>
68
+ <mwc-textarea
69
+ label=${String(i18next.t('label.description'))}
70
+ name="description"
71
+ field-description
72
+ ></mwc-textarea>
73
+ <mwc-select
74
+ label=${String(i18next.t('label.group'))}
75
+ field-group
76
+ helper="If there is no group to choose, you can leave it empty."
77
+ >
78
+ ${groups.map(group => html `
79
+ <mwc-list-item value=${group.id} ?selected=${this.defaultGroup == group.id}
80
+ >${group.name}</mwc-list-item
81
+ >
82
+ `)}
83
+ </mwc-select>
84
+ </div>
85
+
86
+ <div templates>
87
+ <div>${i18next.t('label.board-template')}</div>
88
+ <ox-board-template-list></ox-board-template-list>
89
+ </div>
58
90
  </div>
59
91
 
60
92
  <mwc-button
@@ -71,7 +103,7 @@ let BoardCreationPopup = class BoardCreationPopup extends localize(i18next)(LitE
71
103
  (_a = this.renderRoot.querySelector('mwc-textfield')) === null || _a === void 0 ? void 0 : _a.focus();
72
104
  }, 100);
73
105
  }
74
- onClickSubmit() {
106
+ async onClickSubmit() {
75
107
  var [name, description, groupId] = ['name', 'description', 'group'].map(attr => {
76
108
  var _a;
77
109
  return (_a = this.renderRoot.querySelector(`[field-${attr}]`)) === null || _a === void 0 ? void 0 : _a.value;
@@ -79,11 +111,14 @@ let BoardCreationPopup = class BoardCreationPopup extends localize(i18next)(LitE
79
111
  if (!name) {
80
112
  return;
81
113
  }
114
+ const template = await this.boardTemplateList.getSelected();
82
115
  this.dispatchEvent(new CustomEvent('create-board', {
83
116
  detail: {
84
117
  name,
85
118
  description,
86
- groupId
119
+ groupId,
120
+ model: template === null || template === void 0 ? void 0 : template.model,
121
+ thumbnail: template === null || template === void 0 ? void 0 : template.thumbnail
87
122
  }
88
123
  }));
89
124
  }
@@ -94,6 +129,9 @@ __decorate([
94
129
  __decorate([
95
130
  property({ type: Array })
96
131
  ], BoardCreationPopup.prototype, "groups", void 0);
132
+ __decorate([
133
+ query('ox-board-template-list')
134
+ ], BoardCreationPopup.prototype, "boardTemplateList", void 0);
97
135
  BoardCreationPopup = __decorate([
98
136
  customElement('board-creation-popup')
99
137
  ], BoardCreationPopup);
@@ -1 +1 @@
1
- {"version":3,"file":"board-creation-popup.js","sourceRoot":"","sources":["../../../src/selector/board-creation-popup.ts"],"names":[],"mappings":";AAAA,OAAO,yBAAyB,CAAA;AAChC,OAAO,wBAAwB,CAAA;AAC/B,OAAO,sBAAsB,CAAA;AAC7B,OAAO,kCAAkC,CAAA;AACzC,OAAO,sBAAsB,CAAA;AAE7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAG1C,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IACnE,MAAM,KAAK,MAAM;QACf,OAAO;YACL,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;OAuBF;SACF,CAAA;IACH,CAAC;IAKD,MAAM;QACJ,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAA;QAE9B,OAAO,IAAI,CAAA;;+BAEgB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;;kBAE5C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;;;;;kBAKtC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;;;;YAItC,MAAM,CAAC,GAAG,CACV,KAAK,CAAC,EAAE,CAAC,IAAI,CAAA;qCACY,KAAK,CAAC,EAAE,cAAc,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI;aACzF,CACF;;;;;;gBAMK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;iBACjC,CAAC,CAAa,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;KAEnD,CAAA;IACH,CAAC;IAED,YAAY;QACV,UAAU,CAAC,GAAG,EAAE;;YACd,CAAC;YAAA,MAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,CAAS,0CAAE,KAAK,EAAE,CAAA;QACnE,CAAC,EAAE,GAAG,CAAC,CAAA;IACT,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;;YAC7E,OAAO,MAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,IAAI,GAAG,CAAS,0CAAE,KAAK,CAAA;QACzE,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,IAAI,EAAE;YACT,OAAM;SACP;QAED,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,cAAc,EAAE;YAC9B,MAAM,EAAE;gBACN,IAAI;gBACJ,WAAW;gBACX,OAAO;aACR;SACF,CAAC,CACH,CAAA;IACH,CAAC;CACF,CAAA;AA5D6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDAAsB;AACtB;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;kDAAwC;AA/BvD,kBAAkB;IAD9B,aAAa,CAAC,sBAAsB,CAAC;GACzB,kBAAkB,CA0F9B","sourcesContent":["import '@material/mwc-textfield'\nimport '@material/mwc-textarea'\nimport '@material/mwc-select'\nimport '@material/mwc-list/mwc-list-item'\nimport '@material/mwc-button'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\n\n@customElement('board-creation-popup')\nexport class BoardCreationPopup extends localize(i18next)(LitElement) {\n static get styles() {\n return [\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n padding: 10px;\n background-color: white;\n }\n\n :host > * {\n margin: 10px;\n }\n\n [content] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: auto;\n }\n\n [content] > * {\n margin: 10px 0;\n }\n `\n ]\n }\n\n @property({ type: String }) defaultGroup?: string\n @property({ type: Array }) groups?: { id: string; name: string }[]\n\n render() {\n var groups = this.groups || []\n\n return html`\n <div content>\n <mwc-textfield label=${String(i18next.t('label.name'))} name=\"name\" required field-name></mwc-textfield>\n <mwc-textarea\n label=${String(i18next.t('label.description'))}\n name=\"description\"\n field-description\n ></mwc-textarea>\n <mwc-select\n label=${String(i18next.t('label.group'))}\n field-group\n helper=\"If there is no group to choose, you can leave it empty.\"\n >\n ${groups.map(\n group => html`\n <mwc-list-item value=${group.id} ?selected=${this.defaultGroup == group.id}>${group.name}</mwc-list-item>\n `\n )}\n </mwc-select>\n </div>\n\n <mwc-button\n raised\n label=${String(i18next.t('button.create'))}\n @click=${(e: MouseEvent) => this.onClickSubmit()}\n ></mwc-button>\n `\n }\n\n firstUpdated() {\n setTimeout(() => {\n ;(this.renderRoot.querySelector('mwc-textfield') as any)?.focus()\n }, 100)\n }\n\n onClickSubmit() {\n var [name, description, groupId] = ['name', 'description', 'group'].map(attr => {\n return (this.renderRoot.querySelector(`[field-${attr}]`) as any)?.value\n })\n\n if (!name) {\n return\n }\n\n this.dispatchEvent(\n new CustomEvent('create-board', {\n detail: {\n name,\n description,\n groupId\n }\n })\n )\n }\n}\n"]}
1
+ {"version":3,"file":"board-creation-popup.js","sourceRoot":"","sources":["../../../src/selector/board-creation-popup.ts"],"names":[],"mappings":";AAAA,OAAO,yBAAyB,CAAA;AAChC,OAAO,wBAAwB,CAAA;AAC/B,OAAO,sBAAsB,CAAA;AAC7B,OAAO,kCAAkC,CAAA;AACzC,OAAO,sBAAsB,CAAA;AAC7B,OAAO,2BAA2B,CAAA;AAElC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAI1C,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IACnE,MAAM,KAAK,MAAM;QACf,OAAO;YACL,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CF;SACF,CAAA;IACH,CAAC;IAOD,MAAM;QACJ,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAA;QAE9B,OAAO,IAAI,CAAA;;;iCAGkB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;;oBAE5C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;;;;;oBAKtC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;;;;cAItC,MAAM,CAAC,GAAG,CACV,KAAK,CAAC,EAAE,CAAC,IAAI,CAAA;uCACY,KAAK,CAAC,EAAE,cAAc,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,EAAE;qBACrE,KAAK,CAAC,IAAI;;eAEhB,CACF;;;;;iBAKI,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC;;;;;;;gBAOlC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;iBACjC,CAAC,CAAa,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;KAEnD,CAAA;IACH,CAAC;IAED,YAAY;QACV,UAAU,CAAC,GAAG,EAAE;;YACd,CAAC;YAAA,MAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,CAAS,0CAAE,KAAK,EAAE,CAAA;QACnE,CAAC,EAAE,GAAG,CAAC,CAAA;IACT,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;;YAC7E,OAAO,MAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,IAAI,GAAG,CAAS,0CAAE,KAAK,CAAA;QACzE,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,IAAI,EAAE;YACT,OAAM;SACP;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAA;QAE3D,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,cAAc,EAAE;YAC9B,MAAM,EAAE;gBACN,IAAI;gBACJ,WAAW;gBACX,OAAO;gBACP,KAAK,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK;gBACtB,SAAS,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS;aAC/B;SACF,CAAC,CACH,CAAA;IACH,CAAC;CACF,CAAA;AA3E6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDAAsB;AACtB;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;kDAAwC;AAEjC;IAAhC,KAAK,CAAC,wBAAwB,CAAC;6DAAwC;AAvD7D,kBAAkB;IAD9B,aAAa,CAAC,sBAAsB,CAAC;GACzB,kBAAkB,CA+H9B","sourcesContent":["import '@material/mwc-textfield'\nimport '@material/mwc-textarea'\nimport '@material/mwc-select'\nimport '@material/mwc-list/mwc-list-item'\nimport '@material/mwc-button'\nimport '../ox-board-template-list'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { OxBoardTemplateList } from '../ox-board-template-list'\n\n@customElement('board-creation-popup')\nexport class BoardCreationPopup extends localize(i18next)(LitElement) {\n static get styles() {\n return [\n css`\n :host {\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding: 10px;\n\n background-color: white;\n }\n\n [body] {\n flex: 1;\n\n display: flex;\n flex-direction: row;\n gap: 10px;\n\n overflow: hidden;\n }\n\n [content] {\n flex: 1;\n\n display: flex;\n flex-direction: column;\n gap: 10px;\n\n overflow: auto;\n }\n\n [content] > mwc-textarea {\n flex: 1;\n }\n\n [templates] {\n flex: 2;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n [templates] > ox-board-template-list {\n flex: 1;\n overflow: hidden;\n }\n `\n ]\n }\n\n @property({ type: String }) defaultGroup?: string\n @property({ type: Array }) groups?: { id: string; name: string }[]\n\n @query('ox-board-template-list') boardTemplateList!: OxBoardTemplateList\n\n render() {\n var groups = this.groups || []\n\n return html`\n <div body>\n <div content>\n <mwc-textfield label=${String(i18next.t('label.name'))} name=\"name\" required field-name></mwc-textfield>\n <mwc-textarea\n label=${String(i18next.t('label.description'))}\n name=\"description\"\n field-description\n ></mwc-textarea>\n <mwc-select\n label=${String(i18next.t('label.group'))}\n field-group\n helper=\"If there is no group to choose, you can leave it empty.\"\n >\n ${groups.map(\n group => html`\n <mwc-list-item value=${group.id} ?selected=${this.defaultGroup == group.id}\n >${group.name}</mwc-list-item\n >\n `\n )}\n </mwc-select>\n </div>\n\n <div templates>\n <div>${i18next.t('label.board-template')}</div>\n <ox-board-template-list></ox-board-template-list>\n </div>\n </div>\n\n <mwc-button\n raised\n label=${String(i18next.t('button.create'))}\n @click=${(e: MouseEvent) => this.onClickSubmit()}\n ></mwc-button>\n `\n }\n\n firstUpdated() {\n setTimeout(() => {\n ;(this.renderRoot.querySelector('mwc-textfield') as any)?.focus()\n }, 100)\n }\n\n async onClickSubmit() {\n var [name, description, groupId] = ['name', 'description', 'group'].map(attr => {\n return (this.renderRoot.querySelector(`[field-${attr}]`) as any)?.value\n })\n\n if (!name) {\n return\n }\n\n const template = await this.boardTemplateList.getSelected()\n\n this.dispatchEvent(\n new CustomEvent('create-board', {\n detail: {\n name,\n description,\n groupId,\n model: template?.model,\n thumbnail: template?.thumbnail\n }\n })\n )\n }\n}\n"]}
@@ -52,12 +52,14 @@ let BoardCreationCard = class BoardCreationCard extends localize(i18next)(LitEle
52
52
  .defaultGroup=${this.defaultGroup}
53
53
  .groups=${this.groups}
54
54
  @create-board=${async (e) => {
55
- var { name, description, groupId } = e.detail;
55
+ var { name, description, groupId, model, thumbnail } = e.detail;
56
56
  this.dispatchEvent(new CustomEvent('create-board', {
57
57
  detail: {
58
58
  name,
59
59
  description,
60
- groupId
60
+ groupId,
61
+ model,
62
+ thumbnail
61
63
  }
62
64
  }));
63
65
  this.popup && this.popup.close();
@@ -1 +1 @@
1
- {"version":3,"file":"ox-board-creation-card.js","sourceRoot":"","sources":["../../../src/selector/ox-board-creation-card.ts"],"names":[],"mappings":";AAAA,OAAO,oBAAoB,CAAA;AAC3B,OAAO,wBAAwB,CAAA;AAE/B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGpC,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IAClE,MAAM,KAAK,MAAM;QACf,OAAO;YACL,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;OAwBF;SACF,CAAA;IACH,CAAC;IAQD,MAAM;QACJ,OAAO,IAAI,CAAA,eAAe,CAAC,CAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,6DAA6D,CAAA;IACrH,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,IAAI,CAAC,KAAK,CAAA;SAClB;QAED;;;;WAIG;QACH,IAAI,QAAQ,GAAG,IAAI,CAAA;;wBAEC,IAAI,CAAC,YAAY;kBACvB,IAAI,CAAC,MAAM;wBACL,KAAK,EAAE,CAAc,EAAE,EAAE;YACvC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,CAAA;YAE7C,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,cAAc,EAAE;gBAC9B,MAAM,EAAE;oBACN,IAAI;oBACJ,WAAW;oBACX,OAAO;iBACR;aACF,CAAC,CACH,CAAA;YAED,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAClC,CAAC;;KAEJ,CAAA;QAED,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE;YAC/B,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC;SACvC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,KAAI,CAAC;CACX,CAAA;AAjD6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uDAAsB;AACtB;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;iDAAY;AAjC3B,iBAAiB;IAD7B,aAAa,CAAC,wBAAwB,CAAC;GAC3B,iBAAiB,CAiF7B","sourcesContent":["import '@material/mwc-icon'\nimport './board-creation-popup'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { openPopup } from '@operato/layout'\n\n@customElement('ox-board-creation-card')\nexport class BoardCreationCard extends localize(i18next)(LitElement) {\n static get styles() {\n return [\n css`\n :host {\n display: flex;\n border: var(--card-list-create-border);\n border-radius: var(--card-list-create-border-radius);\n\n background-color: #fff;\n\n align-content: center;\n justify-content: center;\n }\n\n div {\n text-align: center;\n font-size: 0.8em;\n color: var(--card-list-create-color);\n text-transform: capitalize;\n }\n\n mwc-icon {\n display: block;\n font-size: 3.5em;\n color: var(--card-list-create-icon-color);\n }\n `\n ]\n }\n\n /* default group id */\n @property({ type: String }) defaultGroup?: string\n @property({ type: Array }) groups: any\n\n private popup: any\n\n render() {\n return html`<div @click=${(e: Event) => this.onClick()}><mwc-icon>add_circle_outline</mwc-icon>create board</div> `\n }\n\n onClick() {\n if (this.popup) {\n delete this.popup\n }\n\n /*\n * 기존 설정된 이미지가 선택된 상태가 되게 하기 위해서는 selector에 value를 전달해줄 필요가 있음.\n * 주의. value는 object일 수도 있고, string일 수도 있다.\n * string인 경우에는 해당 보드의 id로 해석한다.\n */\n var template = html`\n <board-creation-popup\n .defaultGroup=${this.defaultGroup}\n .groups=${this.groups}\n @create-board=${async (e: CustomEvent) => {\n var { name, description, groupId } = e.detail\n\n this.dispatchEvent(\n new CustomEvent('create-board', {\n detail: {\n name,\n description,\n groupId\n }\n })\n )\n\n this.popup && this.popup.close()\n }}\n ></board-creation-popup>\n `\n\n this.popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n title: i18next.t('title.create-board')\n })\n }\n\n reset() {}\n}\n"]}
1
+ {"version":3,"file":"ox-board-creation-card.js","sourceRoot":"","sources":["../../../src/selector/ox-board-creation-card.ts"],"names":[],"mappings":";AAAA,OAAO,oBAAoB,CAAA;AAC3B,OAAO,wBAAwB,CAAA;AAE/B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGpC,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IAClE,MAAM,KAAK,MAAM;QACf,OAAO;YACL,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;OAwBF;SACF,CAAA;IACH,CAAC;IAQD,MAAM;QACJ,OAAO,IAAI,CAAA,eAAe,CAAC,CAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,6DAA6D,CAAA;IACrH,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,IAAI,CAAC,KAAK,CAAA;SAClB;QAED;;;;WAIG;QACH,IAAI,QAAQ,GAAG,IAAI,CAAA;;wBAEC,IAAI,CAAC,YAAY;kBACvB,IAAI,CAAC,MAAM;wBACL,KAAK,EAAE,CAAc,EAAE,EAAE;YACvC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,MAAM,CAAA;YAE/D,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,cAAc,EAAE;gBAC9B,MAAM,EAAE;oBACN,IAAI;oBACJ,WAAW;oBACX,OAAO;oBACP,KAAK;oBACL,SAAS;iBACV;aACF,CAAC,CACH,CAAA;YAED,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAClC,CAAC;;KAEJ,CAAA;QAED,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE;YAC/B,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC;SACvC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,KAAI,CAAC;CACX,CAAA;AAnD6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uDAAsB;AACtB;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;iDAAY;AAjC3B,iBAAiB;IAD7B,aAAa,CAAC,wBAAwB,CAAC;GAC3B,iBAAiB,CAmF7B","sourcesContent":["import '@material/mwc-icon'\nimport './board-creation-popup'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { openPopup } from '@operato/layout'\n\n@customElement('ox-board-creation-card')\nexport class BoardCreationCard extends localize(i18next)(LitElement) {\n static get styles() {\n return [\n css`\n :host {\n display: flex;\n border: var(--card-list-create-border);\n border-radius: var(--card-list-create-border-radius);\n\n background-color: #fff;\n\n align-content: center;\n justify-content: center;\n }\n\n div {\n text-align: center;\n font-size: 0.8em;\n color: var(--card-list-create-color);\n text-transform: capitalize;\n }\n\n mwc-icon {\n display: block;\n font-size: 3.5em;\n color: var(--card-list-create-icon-color);\n }\n `\n ]\n }\n\n /* default group id */\n @property({ type: String }) defaultGroup?: string\n @property({ type: Array }) groups: any\n\n private popup: any\n\n render() {\n return html`<div @click=${(e: Event) => this.onClick()}><mwc-icon>add_circle_outline</mwc-icon>create board</div> `\n }\n\n onClick() {\n if (this.popup) {\n delete this.popup\n }\n\n /*\n * 기존 설정된 이미지가 선택된 상태가 되게 하기 위해서는 selector에 value를 전달해줄 필요가 있음.\n * 주의. value는 object일 수도 있고, string일 수도 있다.\n * string인 경우에는 해당 보드의 id로 해석한다.\n */\n var template = html`\n <board-creation-popup\n .defaultGroup=${this.defaultGroup}\n .groups=${this.groups}\n @create-board=${async (e: CustomEvent) => {\n var { name, description, groupId, model, thumbnail } = e.detail\n\n this.dispatchEvent(\n new CustomEvent('create-board', {\n detail: {\n name,\n description,\n groupId,\n model,\n thumbnail\n }\n })\n )\n\n this.popup && this.popup.close()\n }}\n ></board-creation-popup>\n `\n\n this.popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n title: i18next.t('title.create-board')\n })\n }\n\n reset() {}\n}\n"]}