@operato/scene-grist 7.3.9 → 7.3.14
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +17 -0
- package/dist/grist.js +17 -2
- package/dist/grist.js.map +1 -1
- package/package.json +3 -2
- package/schema.graphql +22 -7
- package/src/grist.ts +16 -1
- package/translations/en.json +6 -5
- package/translations/ja.json +10 -9
- package/translations/ko.json +2 -1
- package/translations/ms.json +14 -13
- package/translations/zh.json +10 -9
- package/tsconfig.tsbuildinfo +1 -1
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
|
+
## [7.3.14](https://github.com/things-scene/operato-scene/compare/v7.3.13...v7.3.14) (2024-09-20)
|
7
|
+
|
8
|
+
**Note:** Version bump only for package @operato/scene-grist
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
## [7.3.11](https://github.com/things-scene/operato-scene/compare/v7.3.10...v7.3.11) (2024-09-13)
|
15
|
+
|
16
|
+
|
17
|
+
### :bug: Bug Fix
|
18
|
+
|
19
|
+
* missing dependency ([e3f017d](https://github.com/things-scene/operato-scene/commit/e3f017d20eeb8d015974c24bbe0635ade704ec12))
|
20
|
+
|
21
|
+
|
22
|
+
|
6
23
|
## [7.3.9](https://github.com/things-scene/operato-scene/compare/v7.3.8...v7.3.9) (2024-09-11)
|
7
24
|
|
8
25
|
|
package/dist/grist.js
CHANGED
@@ -65,6 +65,15 @@ const NATURE = {
|
|
65
65
|
min: 0.1
|
66
66
|
}
|
67
67
|
},
|
68
|
+
{
|
69
|
+
type: 'number',
|
70
|
+
label: 'row-padding',
|
71
|
+
name: 'rowPadding',
|
72
|
+
property: {
|
73
|
+
step: 1,
|
74
|
+
min: 2
|
75
|
+
}
|
76
|
+
},
|
68
77
|
{
|
69
78
|
type: 'select',
|
70
79
|
label: 'bound-data',
|
@@ -227,14 +236,20 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
227
236
|
* 변화에 따른 기본적인 html 속성이 super.reposition()에서 진행되고, 그 밖의 작업이 필요할 때, 오버라이드 한다.
|
228
237
|
*/
|
229
238
|
reposition() {
|
230
|
-
var _a, _b;
|
231
|
-
const { fillStyle } = this.state;
|
239
|
+
var _a, _b, _c, _d;
|
240
|
+
const { fillStyle, rowPadding } = this.state;
|
232
241
|
if (!fillStyle) {
|
233
242
|
(_a = this.grist) === null || _a === void 0 ? void 0 : _a.style.setProperty('--grist-background-color', 'var(--md-sys-color-surface, #f7f6f4)');
|
234
243
|
}
|
235
244
|
else {
|
236
245
|
(_b = this.grist) === null || _b === void 0 ? void 0 : _b.style.removeProperty('--grist-background-color');
|
237
246
|
}
|
247
|
+
if (rowPadding) {
|
248
|
+
(_c = this.grist) === null || _c === void 0 ? void 0 : _c.style.setProperty('--grid-record-padding', `${rowPadding}px var(--spacing-medium)`);
|
249
|
+
}
|
250
|
+
else {
|
251
|
+
(_d = this.grist) === null || _d === void 0 ? void 0 : _d.style.setProperty('--grid-record-padding', 'var(--spacing-small) var(--spacing-medium)');
|
252
|
+
}
|
238
253
|
super.reposition();
|
239
254
|
}
|
240
255
|
/*
|
package/dist/grist.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"grist.js","sourceRoot":"","sources":["../src/grist.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport 'ses'\nimport '@operato/data-grist/ox-grist.js'\nimport '@operato/data-grist/ox-filters-form.js'\n\nimport { Component, ComponentNature, error, HTMLOverlayElement, Properties } from '@hatiolab/things-scene'\nimport { DataGrist, FetchResult } from '@operato/data-grist'\nimport { i18next as _i18next } from '@operato/i18n'\nimport { FetchOption } from '@operato/data-grist/dist/src/types'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'select',\n label: 'grist-mode',\n name: 'mode',\n property: {\n options: [\n {\n display: 'Grid',\n value: 'GRID'\n },\n {\n display: 'List',\n value: 'LIST'\n },\n {\n display: 'Card',\n value: 'CARD'\n },\n {\n display: 'Depends on device',\n value: 'DEVICE'\n }\n ]\n }\n },\n {\n type: 'textarea',\n label: 'config',\n name: 'config'\n },\n {\n type: 'checkbox',\n label: 'filterable',\n name: 'filterable'\n },\n {\n type: 'checkbox',\n label: 'appendable',\n name: 'appendable'\n },\n {\n type: 'checkbox',\n label: 'paginatable',\n name: 'paginatable'\n },\n {\n type: 'number',\n label: 'content-scale',\n name: 'contentScale',\n property: {\n step: 0.1,\n min: 0.1\n }\n },\n {\n type: 'select',\n label: 'bound-data',\n name: 'boundData',\n property: {\n options: [\n {\n display: '',\n value: ''\n },\n {\n display: 'Focused Row',\n value: 'focused-row'\n },\n {\n display: 'Selected Rows',\n value: 'selected-rows'\n }\n ]\n }\n }\n ],\n help: 'scene/component/grist'\n}\n\nconst isMobileDevice = () => false\n\nexport default class SceneGrist extends HTMLOverlayElement {\n public beforeFetchFuncs: any = {}\n\n private __value: any = {}\n private _listenTo?: any\n private _listener?: any\n\n public grist?: DataGrist\n\n get nature() {\n return NATURE\n }\n\n ready() {\n super.ready()\n\n if (this.rootModel) {\n this._listenTo = this.rootModel\n this._listener = function (this: SceneGrist, after: Properties) {\n after.scale && this.rescale()\n }.bind(this)\n this.rootModel.on('change', this._listener)\n }\n }\n\n removed() {\n if (this._listenTo) {\n this._listenTo.off('change', this._listener)\n\n delete this._listenTo\n delete this._listener\n }\n }\n\n createElement() {\n super.createElement()\n\n this.grist = document.createElement('ox-grist') as DataGrist\n this.element.appendChild(this.grist)\n\n this.rescale()\n\n const grist = this.grist\n\n this.setGristConfig(grist)\n\n grist.fetchHandler = async ({\n page,\n limit,\n sorters,\n sortings,\n filters,\n inherited,\n options\n }: FetchOption): Promise<FetchResult> => {\n Object.values(this.beforeFetchFuncs).forEach((func: any) =>\n func({ page, limit, sorters, sortings, filters, inherited, options })\n )\n var { total = 0, records = [] } = grist.data || {}\n\n return {\n page,\n limit,\n total,\n records\n }\n }\n\n grist.addEventListener('select-record-change', e => {\n if (this.state.boundData === 'selected-rows') {\n this.data = (e.target as DataGrist)?.selected || []\n }\n })\n\n grist.addEventListener('select-all-change', e => {\n if (this.state.boundData === 'selected-rows') {\n this.data = (e.target as DataGrist)?.selected || []\n }\n })\n\n grist.addEventListener('focus-change', (e: Event) => {\n if (this.state.boundData === 'focused-row') {\n this.data = ((e.target as DataGrist)?.data?.records || [])[(e as CustomEvent).detail.row]\n }\n })\n }\n\n get value() {\n return this.__value\n }\n\n set value(value) {\n this.__value = value\n if (!this.grist || typeof value !== 'object') return\n\n var { page, limit } = this.config.pagination || {}\n\n this.grist.data =\n value instanceof Array\n ? {\n page,\n limit,\n ...this.grist._data,\n total: value.length,\n records: Array.from(value)\n }\n : {\n page,\n limit,\n ...this.grist._data,\n ...value\n }\n }\n\n onchange(after: Properties, before: Properties) {\n super.onchange(after, before)\n\n if (\n 'mode' in after ||\n 'filterable' in after ||\n 'appendable' in after ||\n 'paginatable' in after ||\n 'config' in after\n ) {\n this.setGristConfig(this.grist)\n }\n\n this.rescale()\n }\n\n dispose() {\n super.dispose()\n\n delete this.grist\n }\n\n /*\n * 컴포넌트의 생성 또는 속성 변화 시에 호출되며,\n * 그에 따른 html element의 반영이 필요한 부분을 구현한다.\n *\n * ThingsComponent state => HTML element properties\n */\n setElementProperties(grist: DataGrist) {\n this.rescale()\n }\n\n setGristConfig(grist: DataGrist | undefined) {\n if (!grist) {\n return\n }\n\n var { mode, filterable } = this.state\n\n if (mode != 'DEVICE') {\n grist.mode = mode\n } else {\n grist.mode = isMobileDevice() ? 'LIST' : 'GRID'\n }\n\n grist.config = this.config\n\n grist.innerHTML = filterable\n ? `\n <div slot=\"headroom\">\n <div style=\"padding: 9px 9px 0px 9px;\">\n <ox-filters-form autofocus></ox-filters-form>\n </div>\n </div>\n `\n : ''\n }\n\n /*\n * 컴포넌트가 ready 상태가 되거나, 컴포넌트의 속성이 변화될 시 setElementProperties 뒤에 호출된다.\n * 변화에 따른 기본적인 html 속성이 super.reposition()에서 진행되고, 그 밖의 작업이 필요할 때, 오버라이드 한다.\n */\n reposition() {\n const { fillStyle } = this.state\n\n if (!fillStyle) {\n this.grist?.style.setProperty('--grist-background-color', 'var(--md-sys-color-surface, #f7f6f4)')\n } else {\n this.grist?.style.removeProperty('--grist-background-color')\n }\n\n super.reposition()\n }\n\n /*\n * grist는 부모의 스케일의 역으로 transform해서, scale을 1로 맞춘다.\n */\n rescale() {\n var grist = this.grist\n if (!grist) {\n return\n }\n\n const scale = this.getState('contentScale') || 1\n\n const sx = scale\n const sy = scale\n\n const transform = `scale(${sx}, ${sy})`\n\n ;['-webkit-', '-moz-', '-ms-', '-o-', ''].forEach((prefix: string) => {\n grist!.style.setProperty(prefix + 'transform', transform)\n grist!.style.setProperty(prefix + 'transform-origin', '0px 0px')\n })\n\n const { width, height } = this.state\n grist.style.width = Math.round(width / scale) + 'px'\n grist.style.height = Math.round(height / scale) + 'px'\n }\n\n get config() {\n var { config, appendable, paginatable } = this.state\n\n if (typeof config !== 'object') {\n try {\n const c = new Compartment({\n t: _i18next.t,\n i18next: _i18next\n })\n\n config = c.evaluate(`(${config})`)\n } catch (e) {\n error(e)\n }\n }\n\n if (paginatable) {\n if (config.pagination && !config.pagination.limit && config.pagination.pages && config.pagination.pages.length) {\n config.pagination.limit = config.pagination.pages[0]\n }\n }\n\n config.pagination = {\n ...config.pagination,\n infinite: !paginatable\n }\n\n config.rows = {\n ...config.rows,\n appendable: !!appendable\n }\n\n return config\n }\n\n get tagName() {\n return 'div'\n }\n}\n\nComponent.register('grist', SceneGrist)\n"]}
|
1
|
+
{"version":3,"file":"grist.js","sourceRoot":"","sources":["../src/grist.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport 'ses'\nimport '@operato/data-grist/ox-grist.js'\nimport '@operato/data-grist/ox-filters-form.js'\n\nimport { Component, ComponentNature, error, HTMLOverlayElement, Properties } from '@hatiolab/things-scene'\nimport { DataGrist, FetchResult } from '@operato/data-grist'\nimport { i18next as _i18next } from '@operato/i18n'\nimport { FetchOption } from '@operato/data-grist/dist/src/types'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'select',\n label: 'grist-mode',\n name: 'mode',\n property: {\n options: [\n {\n display: 'Grid',\n value: 'GRID'\n },\n {\n display: 'List',\n value: 'LIST'\n },\n {\n display: 'Card',\n value: 'CARD'\n },\n {\n display: 'Depends on device',\n value: 'DEVICE'\n }\n ]\n }\n },\n {\n type: 'textarea',\n label: 'config',\n name: 'config'\n },\n {\n type: 'checkbox',\n label: 'filterable',\n name: 'filterable'\n },\n {\n type: 'checkbox',\n label: 'appendable',\n name: 'appendable'\n },\n {\n type: 'checkbox',\n label: 'paginatable',\n name: 'paginatable'\n },\n {\n type: 'number',\n label: 'content-scale',\n name: 'contentScale',\n property: {\n step: 0.1,\n min: 0.1\n }\n },\n {\n type: 'number',\n label: 'row-padding',\n name: 'rowPadding',\n property: {\n step: 1,\n min: 2\n }\n },\n {\n type: 'select',\n label: 'bound-data',\n name: 'boundData',\n property: {\n options: [\n {\n display: '',\n value: ''\n },\n {\n display: 'Focused Row',\n value: 'focused-row'\n },\n {\n display: 'Selected Rows',\n value: 'selected-rows'\n }\n ]\n }\n }\n ],\n help: 'scene/component/grist'\n}\n\nconst isMobileDevice = () => false\n\nexport default class SceneGrist extends HTMLOverlayElement {\n public beforeFetchFuncs: any = {}\n\n private __value: any = {}\n private _listenTo?: any\n private _listener?: any\n\n public grist?: DataGrist\n\n get nature() {\n return NATURE\n }\n\n ready() {\n super.ready()\n\n if (this.rootModel) {\n this._listenTo = this.rootModel\n this._listener = function (this: SceneGrist, after: Properties) {\n after.scale && this.rescale()\n }.bind(this)\n this.rootModel.on('change', this._listener)\n }\n }\n\n removed() {\n if (this._listenTo) {\n this._listenTo.off('change', this._listener)\n\n delete this._listenTo\n delete this._listener\n }\n }\n\n createElement() {\n super.createElement()\n\n this.grist = document.createElement('ox-grist') as DataGrist\n this.element.appendChild(this.grist)\n\n this.rescale()\n\n const grist = this.grist\n\n this.setGristConfig(grist)\n\n grist.fetchHandler = async ({\n page,\n limit,\n sorters,\n sortings,\n filters,\n inherited,\n options\n }: FetchOption): Promise<FetchResult> => {\n Object.values(this.beforeFetchFuncs).forEach((func: any) =>\n func({ page, limit, sorters, sortings, filters, inherited, options })\n )\n var { total = 0, records = [] } = grist.data || {}\n\n return {\n page,\n limit,\n total,\n records\n }\n }\n\n grist.addEventListener('select-record-change', e => {\n if (this.state.boundData === 'selected-rows') {\n this.data = (e.target as DataGrist)?.selected || []\n }\n })\n\n grist.addEventListener('select-all-change', e => {\n if (this.state.boundData === 'selected-rows') {\n this.data = (e.target as DataGrist)?.selected || []\n }\n })\n\n grist.addEventListener('focus-change', (e: Event) => {\n if (this.state.boundData === 'focused-row') {\n this.data = ((e.target as DataGrist)?.data?.records || [])[(e as CustomEvent).detail.row]\n }\n })\n }\n\n get value() {\n return this.__value\n }\n\n set value(value) {\n this.__value = value\n if (!this.grist || typeof value !== 'object') return\n\n var { page, limit } = this.config.pagination || {}\n\n this.grist.data =\n value instanceof Array\n ? {\n page,\n limit,\n ...this.grist._data,\n total: value.length,\n records: Array.from(value)\n }\n : {\n page,\n limit,\n ...this.grist._data,\n ...value\n }\n }\n\n onchange(after: Properties, before: Properties) {\n super.onchange(after, before)\n\n if (\n 'mode' in after ||\n 'filterable' in after ||\n 'appendable' in after ||\n 'paginatable' in after ||\n 'config' in after\n ) {\n this.setGristConfig(this.grist)\n }\n\n this.rescale()\n }\n\n dispose() {\n super.dispose()\n\n delete this.grist\n }\n\n /*\n * 컴포넌트의 생성 또는 속성 변화 시에 호출되며,\n * 그에 따른 html element의 반영이 필요한 부분을 구현한다.\n *\n * ThingsComponent state => HTML element properties\n */\n setElementProperties(grist: DataGrist) {\n this.rescale()\n }\n\n setGristConfig(grist: DataGrist | undefined) {\n if (!grist) {\n return\n }\n\n var { mode, filterable } = this.state\n\n if (mode != 'DEVICE') {\n grist.mode = mode\n } else {\n grist.mode = isMobileDevice() ? 'LIST' : 'GRID'\n }\n\n grist.config = this.config\n\n grist.innerHTML = filterable\n ? `\n <div slot=\"headroom\">\n <div style=\"padding: 9px 9px 0px 9px;\">\n <ox-filters-form autofocus></ox-filters-form>\n </div>\n </div>\n `\n : ''\n }\n\n /*\n * 컴포넌트가 ready 상태가 되거나, 컴포넌트의 속성이 변화될 시 setElementProperties 뒤에 호출된다.\n * 변화에 따른 기본적인 html 속성이 super.reposition()에서 진행되고, 그 밖의 작업이 필요할 때, 오버라이드 한다.\n */\n reposition() {\n const { fillStyle, rowPadding } = this.state\n\n if (!fillStyle) {\n this.grist?.style.setProperty('--grist-background-color', 'var(--md-sys-color-surface, #f7f6f4)')\n } else {\n this.grist?.style.removeProperty('--grist-background-color')\n }\n\n if (rowPadding) {\n this.grist?.style.setProperty('--grid-record-padding', `${rowPadding}px var(--spacing-medium)`)\n } else {\n this.grist?.style.setProperty('--grid-record-padding', 'var(--spacing-small) var(--spacing-medium)')\n }\n\n super.reposition()\n }\n\n /*\n * grist는 부모의 스케일의 역으로 transform해서, scale을 1로 맞춘다.\n */\n rescale() {\n var grist = this.grist\n if (!grist) {\n return\n }\n\n const scale = this.getState('contentScale') || 1\n\n const sx = scale\n const sy = scale\n\n const transform = `scale(${sx}, ${sy})`\n\n ;['-webkit-', '-moz-', '-ms-', '-o-', ''].forEach((prefix: string) => {\n grist!.style.setProperty(prefix + 'transform', transform)\n grist!.style.setProperty(prefix + 'transform-origin', '0px 0px')\n })\n\n const { width, height } = this.state\n grist.style.width = Math.round(width / scale) + 'px'\n grist.style.height = Math.round(height / scale) + 'px'\n }\n\n get config() {\n var { config, appendable, paginatable } = this.state\n\n if (typeof config !== 'object') {\n try {\n const c = new Compartment({\n t: _i18next.t,\n i18next: _i18next\n })\n\n config = c.evaluate(`(${config})`)\n } catch (e) {\n error(e)\n }\n }\n\n if (paginatable) {\n if (config.pagination && !config.pagination.limit && config.pagination.pages && config.pagination.pages.length) {\n config.pagination.limit = config.pagination.pages[0]\n }\n }\n\n config.pagination = {\n ...config.pagination,\n infinite: !paginatable\n }\n\n config.rows = {\n ...config.rows,\n appendable: !!appendable\n }\n\n return config\n }\n\n get tagName() {\n return 'div'\n }\n}\n\nComponent.register('grist', SceneGrist)\n"]}
|
package/package.json
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
"name": "@operato/scene-grist",
|
3
3
|
"description": "Grist UI component for things-scene",
|
4
4
|
"author": "heartyoh",
|
5
|
-
"version": "7.3.
|
5
|
+
"version": "7.3.14",
|
6
6
|
"main": "dist/index.js",
|
7
7
|
"module": "dist/index.js",
|
8
8
|
"license": "MIT",
|
@@ -29,6 +29,7 @@
|
|
29
29
|
"dependencies": {
|
30
30
|
"@hatiolab/things-scene": "^3.4.0",
|
31
31
|
"@operato/data-grist": "^7.0.0",
|
32
|
+
"@operato/i18n": "^7.0.0",
|
32
33
|
"ses": "^1.5.0"
|
33
34
|
},
|
34
35
|
"devDependencies": {
|
@@ -60,5 +61,5 @@
|
|
60
61
|
"prettier --write"
|
61
62
|
]
|
62
63
|
},
|
63
|
-
"gitHead": "
|
64
|
+
"gitHead": "30d17b3d3682ba2cf7567a4ece76506f37ed8bcd"
|
64
65
|
}
|
package/schema.graphql
CHANGED
@@ -201,6 +201,7 @@ type Attachment {
|
|
201
201
|
refBy: String
|
202
202
|
refType: String
|
203
203
|
size: String!
|
204
|
+
tags: Object
|
204
205
|
updatedAt: DateTimeISO!
|
205
206
|
updater: User
|
206
207
|
}
|
@@ -219,6 +220,7 @@ input AttachmentPatch {
|
|
219
220
|
name: String
|
220
221
|
refBy: String
|
221
222
|
refType: String
|
223
|
+
tags: Object
|
222
224
|
}
|
223
225
|
|
224
226
|
"""Entity for AttributeSet"""
|
@@ -750,6 +752,8 @@ type Employee {
|
|
750
752
|
address: String
|
751
753
|
alias: String
|
752
754
|
approvalLines: [ApprovalLine!]!
|
755
|
+
bankAccount: String
|
756
|
+
bankName: String
|
753
757
|
contact: Contact
|
754
758
|
controlNo: String!
|
755
759
|
createdAt: DateTimeISO
|
@@ -758,8 +762,10 @@ type Employee {
|
|
758
762
|
department: Department
|
759
763
|
domain: Domain!
|
760
764
|
email: EmailAddress
|
765
|
+
emergencyContact: String
|
766
|
+
emergencyContactPhone: String
|
761
767
|
extension: String
|
762
|
-
hiredOn:
|
768
|
+
hiredOn: DateTimeISO
|
763
769
|
id: ID!
|
764
770
|
jobPosition: String
|
765
771
|
jobResponsibility: String
|
@@ -769,7 +775,7 @@ type Employee {
|
|
769
775
|
phone: String
|
770
776
|
photo: String
|
771
777
|
profile: Profile
|
772
|
-
|
778
|
+
retiredOn: DateTimeISO
|
773
779
|
supervises: [Employee!]!
|
774
780
|
supervisor: Employee
|
775
781
|
type: String
|
@@ -787,18 +793,22 @@ type EmployeeList {
|
|
787
793
|
input EmployeePatch {
|
788
794
|
active: Boolean
|
789
795
|
alias: String
|
796
|
+
bankAccount: String
|
797
|
+
bankName: String
|
790
798
|
contact: ObjectRefForContact
|
791
799
|
controlNo: String
|
792
800
|
cuFlag: String
|
793
801
|
department: ObjectRefForDepartment
|
794
|
-
|
802
|
+
emergencyContact: String
|
803
|
+
emergencyContactPhone: String
|
804
|
+
hiredOn: DateTimeISO
|
795
805
|
id: ID
|
796
806
|
jobPosition: String
|
797
807
|
jobResponsibility: String
|
798
808
|
name: String
|
799
809
|
note: String
|
800
810
|
photo: Upload
|
801
|
-
|
811
|
+
retiredOn: DateTimeISO
|
802
812
|
supervisor: ObjectRefForEmployee
|
803
813
|
type: EmployeeType
|
804
814
|
user: ObjectRefForUser
|
@@ -2363,6 +2373,7 @@ input NewAttachment {
|
|
2363
2373
|
file: Upload!
|
2364
2374
|
refBy: String
|
2365
2375
|
refType: String
|
2376
|
+
tags: Object
|
2366
2377
|
}
|
2367
2378
|
|
2368
2379
|
input NewAttributeSet {
|
@@ -2447,17 +2458,21 @@ input NewDepartment {
|
|
2447
2458
|
input NewEmployee {
|
2448
2459
|
active: Boolean
|
2449
2460
|
alias: String
|
2461
|
+
bankAccount: String
|
2462
|
+
bankName: String
|
2450
2463
|
contact: ObjectRefForContact
|
2451
2464
|
controlNo: String!
|
2452
2465
|
department: ObjectRefForDepartment
|
2466
|
+
emergencyContact: String
|
2467
|
+
emergencyContactPhone: String
|
2453
2468
|
extension: String
|
2454
|
-
hiredOn:
|
2469
|
+
hiredOn: DateTimeISO
|
2455
2470
|
jobPosition: String
|
2456
2471
|
jobResponsibility: String
|
2457
2472
|
name: String!
|
2458
2473
|
note: String
|
2459
2474
|
photo: Upload
|
2460
|
-
|
2475
|
+
retiredOn: DateTimeISO
|
2461
2476
|
supervisor: ObjectRefForEmployee
|
2462
2477
|
type: EmployeeType
|
2463
2478
|
user: ObjectRefForUser
|
@@ -3088,7 +3103,7 @@ input ObjectRefForEmployee {
|
|
3088
3103
|
"""Field description"""
|
3089
3104
|
description: String
|
3090
3105
|
email: EmailAddress
|
3091
|
-
hiredOn:
|
3106
|
+
hiredOn: DateTimeISO
|
3092
3107
|
|
3093
3108
|
"""Field id"""
|
3094
3109
|
id: ID!
|
package/src/grist.ts
CHANGED
@@ -70,6 +70,15 @@ const NATURE: ComponentNature = {
|
|
70
70
|
min: 0.1
|
71
71
|
}
|
72
72
|
},
|
73
|
+
{
|
74
|
+
type: 'number',
|
75
|
+
label: 'row-padding',
|
76
|
+
name: 'rowPadding',
|
77
|
+
property: {
|
78
|
+
step: 1,
|
79
|
+
min: 2
|
80
|
+
}
|
81
|
+
},
|
73
82
|
{
|
74
83
|
type: 'select',
|
75
84
|
label: 'bound-data',
|
@@ -274,7 +283,7 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
274
283
|
* 변화에 따른 기본적인 html 속성이 super.reposition()에서 진행되고, 그 밖의 작업이 필요할 때, 오버라이드 한다.
|
275
284
|
*/
|
276
285
|
reposition() {
|
277
|
-
const { fillStyle } = this.state
|
286
|
+
const { fillStyle, rowPadding } = this.state
|
278
287
|
|
279
288
|
if (!fillStyle) {
|
280
289
|
this.grist?.style.setProperty('--grist-background-color', 'var(--md-sys-color-surface, #f7f6f4)')
|
@@ -282,6 +291,12 @@ export default class SceneGrist extends HTMLOverlayElement {
|
|
282
291
|
this.grist?.style.removeProperty('--grist-background-color')
|
283
292
|
}
|
284
293
|
|
294
|
+
if (rowPadding) {
|
295
|
+
this.grist?.style.setProperty('--grid-record-padding', `${rowPadding}px var(--spacing-medium)`)
|
296
|
+
} else {
|
297
|
+
this.grist?.style.setProperty('--grid-record-padding', 'var(--spacing-small) var(--spacing-medium)')
|
298
|
+
}
|
299
|
+
|
285
300
|
super.reposition()
|
286
301
|
}
|
287
302
|
|
package/translations/en.json
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
{
|
2
2
|
"component.grist": "data grid",
|
3
|
-
"component.grist-action": "data grid
|
3
|
+
"component.grist-action": "data grid operation",
|
4
4
|
"label.grist-mode": "mode",
|
5
5
|
"label.target-grist": "target data grid",
|
6
6
|
"label.config": "config",
|
7
7
|
"label.action": "action",
|
8
8
|
"label.content-scale": "content scale",
|
9
9
|
"label.run-at-startup": "run at startup",
|
10
|
-
"label.record-adder-format": "
|
11
|
-
"label.appendable": "appendable",
|
10
|
+
"label.record-adder-format": "initial value on row addition",
|
11
|
+
"label.appendable": "row appendable",
|
12
12
|
"label.filterable": "filterable",
|
13
|
-
"label.paginatable": "
|
14
|
-
"label.bound-data": "bound data"
|
13
|
+
"label.paginatable": "pagination",
|
14
|
+
"label.bound-data": "bound data",
|
15
|
+
"label.row-padding": "padding(row height)"
|
15
16
|
}
|
package/translations/ja.json
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
{
|
2
2
|
"component.grist": "データグリッド",
|
3
|
-
"component.grist-action": "
|
4
|
-
"label.grist-mode": "
|
3
|
+
"component.grist-action": "データグリッド操作",
|
4
|
+
"label.grist-mode": "形式",
|
5
5
|
"label.target-grist": "対象データグリッド",
|
6
6
|
"label.config": "設定",
|
7
|
-
"label.action": "
|
8
|
-
"label.content-scale": "
|
7
|
+
"label.action": "動作",
|
8
|
+
"label.content-scale": "内部スケール",
|
9
9
|
"label.run-at-startup": "起動時に実行",
|
10
|
-
"label.record-adder-format": "
|
11
|
-
"label.appendable": "
|
12
|
-
"label.filterable": "
|
13
|
-
"label.paginatable": "
|
14
|
-
"label.bound-data": "
|
10
|
+
"label.record-adder-format": "行追加時の初期値",
|
11
|
+
"label.appendable": "行追加可能",
|
12
|
+
"label.filterable": "フィルター可能",
|
13
|
+
"label.paginatable": "ページネーション",
|
14
|
+
"label.bound-data": "バインドされたデータ",
|
15
|
+
"label.row-padding": "余白(行の高さ)"
|
15
16
|
}
|
package/translations/ko.json
CHANGED
package/translations/ms.json
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
{
|
2
|
-
"component.grist": "
|
3
|
-
"component.grist-action": "
|
4
|
-
"label.grist-mode": "
|
5
|
-
"label.target-grist": "
|
6
|
-
"label.config": "
|
7
|
-
"label.action": "
|
8
|
-
"label.content-scale": "
|
9
|
-
"label.run-at-startup": "
|
10
|
-
"label.record-adder-format": "
|
11
|
-
"label.appendable": "
|
12
|
-
"label.filterable": "boleh
|
13
|
-
"label.paginatable": "
|
14
|
-
"label.bound-data": "
|
2
|
+
"component.grist": "grid data",
|
3
|
+
"component.grist-action": "operasi grid data",
|
4
|
+
"label.grist-mode": "bentuk",
|
5
|
+
"label.target-grist": "sasaran grid data",
|
6
|
+
"label.config": "tetapan",
|
7
|
+
"label.action": "tindakan",
|
8
|
+
"label.content-scale": "skala dalaman",
|
9
|
+
"label.run-at-startup": "jalankan semasa mula",
|
10
|
+
"label.record-adder-format": "nilai awal semasa tambah baris",
|
11
|
+
"label.appendable": "boleh tambah baris",
|
12
|
+
"label.filterable": "boleh tapis",
|
13
|
+
"label.paginatable": "pagination",
|
14
|
+
"label.bound-data": "data terikat",
|
15
|
+
"label.row-padding": "jarak(tinggi baris)"
|
15
16
|
}
|
package/translations/zh.json
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
{
|
2
2
|
"component.grist": "数据网格",
|
3
3
|
"component.grist-action": "数据网格操作",
|
4
|
-
"label.grist-mode": "
|
4
|
+
"label.grist-mode": "形式",
|
5
5
|
"label.target-grist": "目标数据网格",
|
6
|
-
"label.config": "
|
7
|
-
"label.action": "
|
8
|
-
"label.content-scale": "
|
9
|
-
"label.run-at-startup": "
|
10
|
-
"label.record-adder-format": "
|
11
|
-
"label.appendable": "
|
6
|
+
"label.config": "设置",
|
7
|
+
"label.action": "动作",
|
8
|
+
"label.content-scale": "内部缩放",
|
9
|
+
"label.run-at-startup": "启动时执行",
|
10
|
+
"label.record-adder-format": "添加行时初始值",
|
11
|
+
"label.appendable": "可添加行",
|
12
12
|
"label.filterable": "可过滤",
|
13
|
-
"label.paginatable": "
|
14
|
-
"label.bound-data": "绑定数据"
|
13
|
+
"label.paginatable": "分页",
|
14
|
+
"label.bound-data": "绑定数据",
|
15
|
+
"label.row-padding": "间距(行高)"
|
15
16
|
}
|