@operato/data-grist 2.0.0-alpha.13 → 2.0.0-alpha.132
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 +573 -0
- package/demo/data-grist-test.html +25 -14
- package/demo/index.html +25 -14
- package/demo/report-test.html +13 -2
- package/dist/src/configure/column-builder.js.map +1 -1
- package/dist/src/configure/rows-option-builder.js +2 -1
- package/dist/src/configure/rows-option-builder.js.map +1 -1
- package/dist/src/configure/zero-config.js +1 -0
- package/dist/src/configure/zero-config.js.map +1 -1
- package/dist/src/data-card/data-card-gutter-menu.d.ts +1 -1
- package/dist/src/data-card/data-card-gutter-menu.js +5 -5
- package/dist/src/data-card/data-card-gutter-menu.js.map +1 -1
- package/dist/src/data-card/data-card.d.ts +2 -2
- package/dist/src/data-card/data-card.js +3 -3
- package/dist/src/data-card/data-card.js.map +1 -1
- package/dist/src/data-card/event-handlers/record-card-click-handler.js +1 -1
- package/dist/src/data-card/event-handlers/record-card-click-handler.js.map +1 -1
- package/dist/src/data-card/record-card.d.ts +2 -2
- package/dist/src/data-card/record-card.js +26 -26
- package/dist/src/data-card/record-card.js.map +1 -1
- package/dist/src/data-grid/data-grid-accum-field.js +9 -2
- package/dist/src/data-grid/data-grid-accum-field.js.map +1 -1
- package/dist/src/data-grid/data-grid-body-style.js +1 -0
- package/dist/src/data-grid/data-grid-body-style.js.map +1 -1
- package/dist/src/data-grid/data-grid-body.d.ts +3 -3
- package/dist/src/data-grid/data-grid-body.js +6 -4
- package/dist/src/data-grid/data-grid-body.js.map +1 -1
- package/dist/src/data-grid/data-grid-field.d.ts +1 -1
- package/dist/src/data-grid/data-grid-field.js +6 -3
- package/dist/src/data-grid/data-grid-field.js.map +1 -1
- package/dist/src/data-grid/data-grid-footer.d.ts +2 -2
- package/dist/src/data-grid/data-grid-footer.js +17 -9
- package/dist/src/data-grid/data-grid-footer.js.map +1 -1
- package/dist/src/data-grid/data-grid-header.d.ts +1 -1
- package/dist/src/data-grid/data-grid-header.js +38 -35
- package/dist/src/data-grid/data-grid-header.js.map +1 -1
- package/dist/src/data-grid/data-grid.d.ts +1 -1
- package/dist/src/data-grid/data-grid.js +12 -2
- package/dist/src/data-grid/data-grid.js.map +1 -1
- package/dist/src/data-grist.d.ts +12 -3
- package/dist/src/data-grist.js +74 -31
- package/dist/src/data-grist.js.map +1 -1
- package/dist/src/data-list/data-list-gutter.js +12 -0
- package/dist/src/data-list/data-list-gutter.js.map +1 -1
- package/dist/src/data-list/data-list.d.ts +2 -2
- package/dist/src/data-list/data-list.js +3 -3
- package/dist/src/data-list/data-list.js.map +1 -1
- package/dist/src/data-list/event-handlers/record-partial-click-handler.js +1 -1
- package/dist/src/data-list/event-handlers/record-partial-click-handler.js.map +1 -1
- package/dist/src/data-list/record-partial.d.ts +2 -2
- package/dist/src/data-list/record-partial.js +20 -18
- package/dist/src/data-list/record-partial.js.map +1 -1
- package/dist/src/data-report/data-report-body.d.ts +1 -1
- package/dist/src/data-report/data-report-component.d.ts +1 -1
- package/dist/src/data-report.d.ts +1 -1
- package/dist/src/editors/ox-grist-editor-checkbox.d.ts +3 -2
- package/dist/src/editors/ox-grist-editor-checkbox.js +9 -2
- package/dist/src/editors/ox-grist-editor-checkbox.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-color.d.ts +1 -1
- package/dist/src/editors/ox-grist-editor-date.d.ts +1 -1
- package/dist/src/editors/ox-grist-editor-datetime.d.ts +2 -2
- package/dist/src/editors/ox-grist-editor-datetime.js +1 -2
- package/dist/src/editors/ox-grist-editor-datetime.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-email.d.ts +1 -1
- package/dist/src/editors/ox-grist-editor-file.d.ts +3 -2
- package/dist/src/editors/ox-grist-editor-file.js +8 -2
- package/dist/src/editors/ox-grist-editor-file.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-image.d.ts +2 -2
- package/dist/src/editors/ox-grist-editor-image.js +8 -8
- package/dist/src/editors/ox-grist-editor-image.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-month.d.ts +1 -1
- package/dist/src/editors/ox-grist-editor-multiple-select.d.ts +1 -1
- package/dist/src/editors/ox-grist-editor-number.d.ts +3 -2
- package/dist/src/editors/ox-grist-editor-number.js +10 -9
- package/dist/src/editors/ox-grist-editor-number.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-password.d.ts +1 -1
- package/dist/src/editors/ox-grist-editor-select.d.ts +1 -1
- package/dist/src/editors/ox-grist-editor-select.js +37 -25
- package/dist/src/editors/ox-grist-editor-select.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-tel.d.ts +1 -1
- package/dist/src/editors/ox-grist-editor-text.d.ts +2 -1
- package/dist/src/editors/ox-grist-editor-text.js +3 -0
- package/dist/src/editors/ox-grist-editor-text.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-textarea.d.ts +2 -1
- package/dist/src/editors/ox-grist-editor-textarea.js +3 -0
- package/dist/src/editors/ox-grist-editor-textarea.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-time.d.ts +1 -1
- package/dist/src/editors/ox-grist-editor-tree.d.ts +1 -1
- package/dist/src/editors/ox-grist-editor-week.d.ts +1 -1
- package/dist/src/editors/ox-grist-editor.d.ts +4 -4
- package/dist/src/editors/ox-grist-editor.js +14 -16
- package/dist/src/editors/ox-grist-editor.js.map +1 -1
- package/dist/src/editors/ox-input-tree.d.ts +1 -1
- package/dist/src/empty-note.d.ts +2 -2
- package/dist/src/empty-note.js +3 -3
- package/dist/src/empty-note.js.map +1 -1
- package/dist/src/filters/filter-checkbox.js +12 -5
- package/dist/src/filters/filter-checkbox.js.map +1 -1
- package/dist/src/filters/filter-range-date.js +12 -1
- package/dist/src/filters/filter-range-date.js.map +1 -1
- package/dist/src/filters/filter-select.js +30 -16
- package/dist/src/filters/filter-select.js.map +1 -1
- package/dist/src/filters/filter-styles.js +46 -28
- package/dist/src/filters/filter-styles.js.map +1 -1
- package/dist/src/filters/filters-form.d.ts +7 -1
- package/dist/src/filters/filters-form.js +154 -71
- package/dist/src/filters/filters-form.js.map +1 -1
- package/dist/src/gutters/gutter-button.d.ts +1 -1
- package/dist/src/gutters/gutter-button.js +3 -3
- package/dist/src/gutters/gutter-button.js.map +1 -1
- package/dist/src/gutters/gutter-dirty.d.ts +1 -1
- package/dist/src/gutters/gutter-dirty.js +5 -5
- package/dist/src/gutters/gutter-dirty.js.map +1 -1
- package/dist/src/handlers/contextmenu-tree-mutation.js +4 -4
- package/dist/src/handlers/contextmenu-tree-mutation.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/personalizer/index.d.ts +1 -0
- package/dist/src/personalizer/index.js +2 -0
- package/dist/src/personalizer/index.js.map +1 -0
- package/dist/src/personalizer/ox-grist-personalizer.d.ts +10 -0
- package/dist/src/personalizer/ox-grist-personalizer.js +171 -0
- package/dist/src/personalizer/ox-grist-personalizer.js.map +1 -0
- package/dist/src/record-view/record-creator.d.ts +2 -2
- package/dist/src/record-view/record-creator.js +1 -1
- package/dist/src/record-view/record-creator.js.map +1 -1
- package/dist/src/record-view/record-view-body.d.ts +3 -3
- package/dist/src/record-view/record-view-body.js +4 -4
- package/dist/src/record-view/record-view-body.js.map +1 -1
- package/dist/src/record-view/record-view.d.ts +2 -2
- package/dist/src/record-view/record-view.js +5 -5
- package/dist/src/record-view/record-view.js.map +1 -1
- package/dist/src/renderers/ox-grist-renderer-progress.d.ts +1 -1
- package/dist/src/renderers/ox-grist-renderer-select.js +34 -4
- package/dist/src/renderers/ox-grist-renderer-select.js.map +1 -1
- package/dist/src/renderers/ox-grist-renderer-tree.d.ts +1 -1
- package/dist/src/renderers/ox-grist-renderer.d.ts +2 -2
- package/dist/src/sorters/sorters-control.js +3 -3
- package/dist/src/sorters/sorters-control.js.map +1 -1
- package/dist/src/types.d.ts +30 -9
- package/dist/src/types.js.map +1 -1
- package/dist/stories/{accumulator.stories.d.ts → accumulator-format.stories.d.ts} +1 -1
- package/dist/stories/{accumulator.stories.js → accumulator-format.stories.js} +50 -125
- package/dist/stories/accumulator-format.stories.js.map +1 -0
- package/dist/stories/barcode-input-filter.stories.d.ts +1 -1
- package/dist/stories/barcode-input-filter.stories.js +41 -79
- package/dist/stories/barcode-input-filter.stories.js.map +1 -1
- package/dist/stories/bounded-select-filters.stories.d.ts +25 -0
- package/dist/stories/bounded-select-filters.stories.js +264 -0
- package/dist/stories/bounded-select-filters.stories.js.map +1 -0
- package/dist/stories/bounded-select-record.stories.d.ts +25 -0
- package/dist/stories/bounded-select-record.stories.js +267 -0
- package/dist/stories/bounded-select-record.stories.js.map +1 -0
- package/dist/stories/creatable-only-column.stories.d.ts +25 -0
- package/dist/stories/creatable-only-column.stories.js +211 -0
- package/dist/stories/creatable-only-column.stories.js.map +1 -0
- package/dist/stories/default-filters.stories.d.ts +1 -1
- package/dist/stories/default-filters.stories.js +84 -79
- package/dist/stories/default-filters.stories.js.map +1 -1
- package/dist/stories/dynamic-editable.stories.d.ts +1 -1
- package/dist/stories/dynamic-editable.stories.js +51 -86
- package/dist/stories/dynamic-editable.stories.js.map +1 -1
- package/dist/stories/empty-sorters.stories.d.ts +1 -1
- package/dist/stories/empty-sorters.stories.js +41 -78
- package/dist/stories/empty-sorters.stories.js.map +1 -1
- package/dist/stories/explicit-fetch.stories.d.ts +1 -1
- package/dist/stories/explicit-fetch.stories.js +42 -79
- package/dist/stories/explicit-fetch.stories.js.map +1 -1
- package/dist/stories/fixed-column.stories.d.ts +1 -1
- package/dist/stories/fixed-column.stories.js +45 -127
- package/dist/stories/fixed-column.stories.js.map +1 -1
- package/dist/stories/grid-setting.stories.d.ts +42 -0
- package/dist/stories/grid-setting.stories.js +415 -0
- package/dist/stories/grid-setting.stories.js.map +1 -0
- package/dist/stories/grist-modes.stories.d.ts +1 -1
- package/dist/stories/grist-modes.stories.js +74 -140
- package/dist/stories/grist-modes.stories.js.map +1 -1
- package/dist/stories/group-header.stories.d.ts +1 -1
- package/dist/stories/group-header.stories.js +45 -127
- package/dist/stories/group-header.stories.js.map +1 -1
- package/dist/stories/textarea.stories.d.ts +1 -1
- package/dist/stories/textarea.stories.js +39 -121
- package/dist/stories/textarea.stories.js.map +1 -1
- package/dist/stories/tree-column-with-checkbox.stories.d.ts +1 -1
- package/dist/stories/tree-column-with-checkbox.stories.js +49 -136
- package/dist/stories/tree-column-with-checkbox.stories.js.map +1 -1
- package/dist/stories/tree-column.stories.d.ts +1 -1
- package/dist/stories/tree-column.stories.js +49 -136
- package/dist/stories/tree-column.stories.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/default-value/default-value.md +1 -1
- package/docs/default-value/value-generator/date-generator.md +31 -2
- package/docs/default-value/value-generator/hour-time-generator.md +33 -0
- package/docs/default-value/value-generator/minute-time-generator.md +33 -0
- package/docs/default-value/value-generator/month-date-generator.md +4 -2
- package/docs/default-value/value-generator/now-generator.md +29 -0
- package/docs/default-value/value-generator/time-generator.md +31 -0
- package/docs/default-value/value-generator/today-generator.md +29 -0
- package/docs/default-value/value-generator/week-date-generator.md +33 -2
- package/docs/default-value/value-generator/year-date-generator.md +33 -2
- package/package.json +26 -21
- package/src/configure/column-builder.ts +1 -0
- package/src/configure/rows-option-builder.ts +11 -1
- package/src/configure/zero-config.ts +1 -0
- package/src/data-card/data-card-gutter-menu.ts +5 -5
- package/src/data-card/data-card.ts +3 -3
- package/src/data-card/event-handlers/record-card-click-handler.ts +1 -1
- package/src/data-card/record-card.ts +30 -32
- package/src/data-grid/data-grid-accum-field.ts +8 -2
- package/src/data-grid/data-grid-body-style.ts +1 -0
- package/src/data-grid/data-grid-body.ts +7 -5
- package/src/data-grid/data-grid-field.ts +4 -2
- package/src/data-grid/data-grid-footer.ts +18 -11
- package/src/data-grid/data-grid-header.ts +68 -65
- package/src/data-grid/data-grid.ts +14 -4
- package/src/data-grist.ts +89 -30
- package/src/data-list/data-list-gutter.ts +12 -0
- package/src/data-list/data-list.ts +3 -3
- package/src/data-list/event-handlers/record-partial-click-handler.ts +1 -1
- package/src/data-list/record-partial.ts +22 -22
- package/src/editors/ox-grist-editor-checkbox.ts +12 -2
- package/src/editors/ox-grist-editor-datetime.ts +1 -2
- package/src/editors/ox-grist-editor-file.ts +12 -2
- package/src/editors/ox-grist-editor-image.ts +10 -7
- package/src/editors/ox-grist-editor-number.ts +10 -9
- package/src/editors/ox-grist-editor-select.ts +41 -28
- package/src/editors/ox-grist-editor-text.ts +4 -0
- package/src/editors/ox-grist-editor-textarea.ts +4 -0
- package/src/editors/ox-grist-editor.ts +14 -14
- package/src/empty-note.ts +3 -3
- package/src/filters/filter-checkbox.ts +15 -5
- package/src/filters/filter-range-date.ts +16 -1
- package/src/filters/filter-select.ts +41 -28
- package/src/filters/filter-styles.ts +46 -28
- package/src/filters/filters-form.ts +159 -59
- package/src/gutters/gutter-button.ts +3 -3
- package/src/gutters/gutter-dirty.ts +5 -5
- package/src/handlers/contextmenu-tree-mutation.ts +4 -4
- package/src/index.ts +1 -1
- package/src/personalizer/index.ts +1 -0
- package/src/personalizer/ox-grist-personalizer.ts +181 -0
- package/src/record-view/record-creator.ts +1 -1
- package/src/record-view/record-view-body.ts +4 -4
- package/src/record-view/record-view.ts +5 -5
- package/src/renderers/ox-grist-renderer-select.ts +41 -6
- package/src/sorters/sorters-control.ts +3 -3
- package/src/types.ts +36 -10
- package/stories/{accumulator.stories.ts → accumulator-format.stories.ts} +48 -126
- package/stories/barcode-input-filter.stories.ts +53 -89
- package/stories/bounded-select-filters.stories.ts +313 -0
- package/stories/bounded-select-record.stories.ts +316 -0
- package/stories/creatable-only-column.stories.ts +231 -0
- package/stories/default-filters.stories.ts +96 -89
- package/stories/dynamic-editable.stories.ts +58 -92
- package/stories/empty-sorters.stories.ts +53 -89
- package/stories/explicit-fetch.stories.ts +54 -90
- package/stories/fixed-column.stories.ts +57 -137
- package/stories/grid-setting.stories.ts +462 -0
- package/stories/grist-modes.stories.ts +86 -155
- package/stories/group-header.stories.ts +57 -137
- package/stories/textarea.stories.ts +42 -127
- package/stories/tree-column-with-checkbox.stories.ts +53 -138
- package/stories/tree-column.stories.ts +53 -138
- package/themes/grist-theme.css +2 -0
- package/dist/src/value-generator/date-generator.d.ts +0 -6
- package/dist/src/value-generator/date-generator.js +0 -30
- package/dist/src/value-generator/date-generator.js.map +0 -1
- package/dist/src/value-generator/hour-time-generator.d.ts +0 -7
- package/dist/src/value-generator/hour-time-generator.js +0 -29
- package/dist/src/value-generator/hour-time-generator.js.map +0 -1
- package/dist/src/value-generator/index.d.ts +0 -1
- package/dist/src/value-generator/index.js +0 -2
- package/dist/src/value-generator/index.js.map +0 -1
- package/dist/src/value-generator/minute-time-generator.d.ts +0 -7
- package/dist/src/value-generator/minute-time-generator.js +0 -29
- package/dist/src/value-generator/minute-time-generator.js.map +0 -1
- package/dist/src/value-generator/month-date-generator.d.ts +0 -7
- package/dist/src/value-generator/month-date-generator.js +0 -31
- package/dist/src/value-generator/month-date-generator.js.map +0 -1
- package/dist/src/value-generator/now-generator.d.ts +0 -4
- package/dist/src/value-generator/now-generator.js +0 -8
- package/dist/src/value-generator/now-generator.js.map +0 -1
- package/dist/src/value-generator/registry.d.ts +0 -11
- package/dist/src/value-generator/registry.js +0 -50
- package/dist/src/value-generator/registry.js.map +0 -1
- package/dist/src/value-generator/time-generator.d.ts +0 -6
- package/dist/src/value-generator/time-generator.js +0 -28
- package/dist/src/value-generator/time-generator.js.map +0 -1
- package/dist/src/value-generator/today-generator.d.ts +0 -4
- package/dist/src/value-generator/today-generator.js +0 -8
- package/dist/src/value-generator/today-generator.js.map +0 -1
- package/dist/src/value-generator/week-date-generator.d.ts +0 -7
- package/dist/src/value-generator/week-date-generator.js +0 -29
- package/dist/src/value-generator/week-date-generator.js.map +0 -1
- package/dist/src/value-generator/year-date-generator.d.ts +0 -7
- package/dist/src/value-generator/year-date-generator.js +0 -29
- package/dist/src/value-generator/year-date-generator.js.map +0 -1
- package/dist/stories/accumulator.stories.js.map +0 -1
- package/src/value-generator/date-generator.ts +0 -35
- package/src/value-generator/hour-time-generator.ts +0 -43
- package/src/value-generator/index.ts +0 -1
- package/src/value-generator/minute-time-generator.ts +0 -43
- package/src/value-generator/month-date-generator.ts +0 -38
- package/src/value-generator/now-generator.ts +0 -10
- package/src/value-generator/registry.ts +0 -58
- package/src/value-generator/time-generator.ts +0 -33
- package/src/value-generator/today-generator.ts +0 -10
- package/src/value-generator/week-date-generator.ts +0 -40
- package/src/value-generator/year-date-generator.ts +0 -36
@@ -47,6 +47,10 @@ export class DataGridAccumField extends LitElement {
|
|
47
47
|
flex: none;
|
48
48
|
margin: 0 auto;
|
49
49
|
}
|
50
|
+
|
51
|
+
md-icon {
|
52
|
+
font-size: 1.5em;
|
53
|
+
}
|
50
54
|
`
|
51
55
|
]
|
52
56
|
|
@@ -58,11 +62,11 @@ export class DataGridAccumField extends LitElement {
|
|
58
62
|
@property({ type: Boolean }) editing = false
|
59
63
|
@property({ type: Object }) value = {}
|
60
64
|
@property({ attribute: false }) emphasized: any = false
|
61
|
-
@property({ type: String }) fixed?: string
|
65
|
+
@property({ type: String, attribute: true }) fixed?: string
|
62
66
|
|
63
67
|
render(): TemplateResult {
|
64
68
|
if (!this.column || !this.column.accumulator) {
|
65
|
-
return this.columnIndex == 0 ? html`<
|
69
|
+
return this.columnIndex == 0 ? html`<md-icon>functions</md-icon>` : html`${nothing}`
|
66
70
|
}
|
67
71
|
|
68
72
|
var { value, column, record, rowIndex } = this
|
@@ -96,6 +100,8 @@ export class DataGridAccumField extends LitElement {
|
|
96
100
|
if (changes.has('fixed')) {
|
97
101
|
if (this.fixed) {
|
98
102
|
this.style.left = this.fixed + 'px'
|
103
|
+
} else {
|
104
|
+
this.style.left = 'unset'
|
99
105
|
}
|
100
106
|
}
|
101
107
|
}
|
@@ -100,7 +100,7 @@ export class DataGridBody extends LitElement {
|
|
100
100
|
@property({ type: Array }) columns: ColumnConfig[] = []
|
101
101
|
@property({ type: Object }) data: GristData = ZERO_DATA
|
102
102
|
@property({ type: Object }) focused: { row: number; column: number } = ZERO_FOCUS
|
103
|
-
@property({ type: Object }) editTarget: { row: number; column: number;
|
103
|
+
@property({ type: Object }) editTarget: { row: number; column: number; valueWith: string | null } | null = null
|
104
104
|
@property({ type: Number }) from = -1
|
105
105
|
@property({ type: Number }) to = -1
|
106
106
|
@property({ type: Array }) fixedLefts: number[] = []
|
@@ -135,7 +135,7 @@ export class DataGridBody extends LitElement {
|
|
135
135
|
render() {
|
136
136
|
// block이 선택되어 있으면, focused row/column은 표현하지 않는다.
|
137
137
|
var { row: focusedRow, column: focusedColumn } = (!this._selectBlock && this.focused) || {}
|
138
|
-
var { row: editingRow, column: editingColumn,
|
138
|
+
var { row: editingRow, column: editingColumn, valueWith = null } = this.editTarget || {}
|
139
139
|
|
140
140
|
var columns = this.columns.filter(column => !column.hidden)
|
141
141
|
var data = this.data
|
@@ -182,7 +182,7 @@ export class DataGridBody extends LitElement {
|
|
182
182
|
?selected-row=${attrSelected}
|
183
183
|
?focused=${idxRow === focusedRow && idxColumn === focusedColumn}
|
184
184
|
?editing=${idxRow === editingRow && idxColumn === editingColumn}
|
185
|
-
.
|
185
|
+
.valueWith=${valueWith}
|
186
186
|
.value=${record[column.name]}
|
187
187
|
?dirty=${!!dirtyFields[column.name]}
|
188
188
|
fixed=${ifDefined(this.fixedLefts[idxColumn])}
|
@@ -400,7 +400,7 @@ export class DataGridBody extends LitElement {
|
|
400
400
|
}
|
401
401
|
}
|
402
402
|
|
403
|
-
startEditTarget(row: number, column: number,
|
403
|
+
startEditTarget(row: number, column: number, valueWith: string | null = null) {
|
404
404
|
var { editable } = this.columns.filter(column => !column.hidden)[column].record
|
405
405
|
if (typeof editable === 'function') {
|
406
406
|
const curRow = this.data.records[row] || {}
|
@@ -419,7 +419,7 @@ export class DataGridBody extends LitElement {
|
|
419
419
|
this.editTarget = {
|
420
420
|
row,
|
421
421
|
column,
|
422
|
-
|
422
|
+
valueWith
|
423
423
|
}
|
424
424
|
}
|
425
425
|
|
@@ -647,11 +647,13 @@ export class DataGridBody extends LitElement {
|
|
647
647
|
|
648
648
|
switch (type) {
|
649
649
|
case 'object':
|
650
|
+
case 'parameters':
|
650
651
|
try {
|
651
652
|
value = JSON.parse(value || 'null')
|
652
653
|
} catch (err) {}
|
653
654
|
break
|
654
655
|
case 'boolean':
|
656
|
+
case 'checkbox':
|
655
657
|
value = !!value && !!String(value).match(/true/i)
|
656
658
|
break
|
657
659
|
case 'number':
|
@@ -87,9 +87,9 @@ export class DataGridField extends LitElement {
|
|
87
87
|
@property({ type: Number }) columnIndex = 0
|
88
88
|
@property({ type: Boolean }) editing = false
|
89
89
|
@property({ type: Object }) value = {}
|
90
|
-
@property({ type: String })
|
90
|
+
@property({ type: String }) valueWith: string | null = null
|
91
91
|
@property({ attribute: false }) emphasized: any = false
|
92
|
-
@property({ type: String }) fixed?: string
|
92
|
+
@property({ type: String, attribute: true }) fixed?: string
|
93
93
|
@property({ type: String }) type?: string
|
94
94
|
@property({ type: Boolean }) isWorking: boolean = false
|
95
95
|
|
@@ -155,6 +155,8 @@ export class DataGridField extends LitElement {
|
|
155
155
|
if (changes.has('fixed')) {
|
156
156
|
if (this.fixed) {
|
157
157
|
this.style.left = this.fixed + 'px'
|
158
|
+
} else {
|
159
|
+
this.style.left = 'unset'
|
158
160
|
}
|
159
161
|
}
|
160
162
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import '@material/
|
1
|
+
import '@material/web/icon/icon.js'
|
2
2
|
|
3
3
|
import { css, html, LitElement } from 'lit'
|
4
4
|
import { customElement, property } from 'lit/decorators.js'
|
@@ -14,17 +14,18 @@ export class DataGridFooter extends LitElement {
|
|
14
14
|
:host {
|
15
15
|
display: flex;
|
16
16
|
flex-direction: row;
|
17
|
+
gap: 4px;
|
17
18
|
overflow: hidden;
|
18
19
|
|
19
20
|
padding: var(--grid-footer-padding);
|
20
21
|
background-color: var(--grid-footer-background-color);
|
21
22
|
font-size: var(--grid-footer-font-size);
|
23
|
+
align-items: center;
|
22
24
|
}
|
23
25
|
|
24
26
|
:host * {
|
25
27
|
white-space: nowrap;
|
26
28
|
overflow: hidden;
|
27
|
-
padding: 0 2px;
|
28
29
|
|
29
30
|
text-overflow: ellipsis;
|
30
31
|
text-align: center;
|
@@ -35,11 +36,18 @@ export class DataGridFooter extends LitElement {
|
|
35
36
|
flex: 1;
|
36
37
|
}
|
37
38
|
|
38
|
-
|
39
|
+
md-icon {
|
39
40
|
font-size: 1.5em;
|
40
41
|
vertical-align: middle;
|
41
42
|
}
|
42
43
|
|
44
|
+
.limit {
|
45
|
+
display: flex;
|
46
|
+
flex-direction: row;
|
47
|
+
gap: 6px;
|
48
|
+
align-items: center;
|
49
|
+
}
|
50
|
+
|
43
51
|
.limit a {
|
44
52
|
color: var(--grid-footer-limit-color);
|
45
53
|
}
|
@@ -82,20 +90,19 @@ export class DataGridFooter extends LitElement {
|
|
82
90
|
var totalPage = Math.max(1, Math.ceil(total / limit))
|
83
91
|
|
84
92
|
return html`
|
85
|
-
<a ?inactive=${page <= 1} @click=${() => this._gotoPage(1)}><
|
86
|
-
<a ?inactive=${page <= 1} @click=${() => this._gotoPage(page - 1)}><
|
93
|
+
<a ?inactive=${page <= 1} @click=${() => this._gotoPage(1)}><md-icon>skip_previous</md-icon></a>
|
94
|
+
<a ?inactive=${page <= 1} @click=${() => this._gotoPage(page - 1)}><md-icon>navigate_before</md-icon></a>
|
87
95
|
<span>page <strong>${page}</strong> / ${totalPage}</span>
|
88
|
-
<a ?inactive=${page >= totalPage} @click=${() => this._gotoPage(page + 1)}><
|
89
|
-
<a ?inactive=${page >= totalPage} @click=${() => this._gotoPage(totalPage)}><
|
96
|
+
<a ?inactive=${page >= totalPage} @click=${() => this._gotoPage(page + 1)}><md-icon>navigate_next</md-icon></a>
|
97
|
+
<a ?inactive=${page >= totalPage} @click=${() => this._gotoPage(totalPage)}><md-icon>skip_next</md-icon></a>
|
90
98
|
|
91
99
|
<span class="filler"></span>
|
92
100
|
|
93
101
|
<span class="limit">
|
94
102
|
${pages.map(
|
95
|
-
size =>
|
96
|
-
|
97
|
-
|
98
|
-
`
|
103
|
+
size => html`
|
104
|
+
<a ?selected=${limit == size} @click=${() => this._changeLimit(size)}>${stringifyBigNumber(size)}</a>
|
105
|
+
`
|
99
106
|
)}
|
100
107
|
records
|
101
108
|
</span>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import '@operato/popup/ox-popup.js'
|
2
|
-
import '@material/
|
2
|
+
import '@material/web/icon/icon.js'
|
3
3
|
|
4
4
|
import { css, html, LitElement, PropertyValues, nothing, TemplateResult } from 'lit'
|
5
5
|
import { customElement, property, state } from 'lit/decorators.js'
|
@@ -22,6 +22,7 @@ export class DataGridHeader extends LitElement {
|
|
22
22
|
TooltipStyles,
|
23
23
|
css`
|
24
24
|
:host {
|
25
|
+
position: relative;
|
25
26
|
display: grid;
|
26
27
|
grid-template-columns: var(--grid-template-columns);
|
27
28
|
|
@@ -62,7 +63,7 @@ export class DataGridHeader extends LitElement {
|
|
62
63
|
align-self: center;
|
63
64
|
}
|
64
65
|
|
65
|
-
span[for-title]
|
66
|
+
span[for-title] md-icon {
|
66
67
|
font-size: var(--grid-record-fontsize);
|
67
68
|
}
|
68
69
|
|
@@ -75,11 +76,11 @@ export class DataGridHeader extends LitElement {
|
|
75
76
|
border: 0;
|
76
77
|
}
|
77
78
|
|
78
|
-
span[sorter]
|
79
|
+
span[sorter] md-icon {
|
79
80
|
font-size: var(--grid-header-sorter-size);
|
80
81
|
}
|
81
82
|
|
82
|
-
span[filter] >
|
83
|
+
span[filter] > md-icon {
|
83
84
|
font-size: var(--fontsize-default);
|
84
85
|
line-height: 20px;
|
85
86
|
}
|
@@ -104,7 +105,7 @@ export class DataGridHeader extends LitElement {
|
|
104
105
|
vertical-align: middle;
|
105
106
|
}
|
106
107
|
|
107
|
-
[filter-title]
|
108
|
+
[filter-title] md-icon {
|
108
109
|
opacity: 0.7;
|
109
110
|
color: var(--grid-header-filter-title-icon-color);
|
110
111
|
}
|
@@ -363,12 +364,10 @@ export class DataGridHeader extends LitElement {
|
|
363
364
|
if (sorters.length > 1) {
|
364
365
|
var rank = sorters.indexOf(sorter) + 1
|
365
366
|
return sorter.desc
|
366
|
-
? html` <
|
367
|
-
: html` <
|
367
|
+
? html` <md-icon>keyboard_arrow_down</md-icon><sub>${rank}</sub> `
|
368
|
+
: html` <md-icon>keyboard_arrow_up</md-icon><sub>${rank}</sub> `
|
368
369
|
} else {
|
369
|
-
return sorter.desc
|
370
|
-
? html` <mwc-icon>keyboard_arrow_down</mwc-icon> `
|
371
|
-
: html` <mwc-icon>keyboard_arrow_up</mwc-icon> `
|
370
|
+
return sorter.desc ? html` <md-icon>keyboard_arrow_down</md-icon> ` : html` <md-icon>keyboard_arrow_up</md-icon> `
|
372
371
|
}
|
373
372
|
}
|
374
373
|
|
@@ -381,7 +380,7 @@ export class DataGridHeader extends LitElement {
|
|
381
380
|
const renderer = getFilterRenderer(type)[idx]
|
382
381
|
|
383
382
|
return html`
|
384
|
-
<
|
383
|
+
<md-icon
|
385
384
|
@click=${(e: Event) => {
|
386
385
|
const parent = (e.target as HTMLElement).closest('[column]') as HTMLElement
|
387
386
|
const popup = parent.querySelector('ox-popup, ox-popup-list') as OxPopup | null
|
@@ -398,63 +397,63 @@ export class DataGridHeader extends LitElement {
|
|
398
397
|
top
|
399
398
|
})
|
400
399
|
}}
|
401
|
-
>filter_alt</
|
400
|
+
>filter_alt</md-icon
|
402
401
|
>
|
403
402
|
|
404
403
|
${!renderer
|
405
404
|
? html``
|
406
405
|
: type !== 'select'
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
406
|
+
? html` <ox-popup
|
407
|
+
><div filter-title><md-icon>filter_alt</md-icon> filter by <strong>${column.name}</strong></div>
|
408
|
+
${renderer(column, value, this)}</ox-popup
|
409
|
+
>`
|
410
|
+
: filter!.operator === 'in'
|
411
|
+
? html`<ox-popup-list
|
412
|
+
multiple
|
413
|
+
attr-selected="checked"
|
414
|
+
.value=${value}
|
415
|
+
with-search
|
416
|
+
@select=${(e: CustomEvent) =>
|
417
|
+
e.target?.dispatchEvent(
|
418
|
+
new CustomEvent('filter-change', {
|
419
|
+
bubbles: true,
|
420
|
+
composed: true,
|
421
|
+
detail: {
|
422
|
+
name,
|
423
|
+
operator: filter!.operator,
|
424
|
+
value: !e.detail
|
425
|
+
? undefined
|
426
|
+
: e.detail instanceof Array && e.detail.length === 0
|
427
|
+
? undefined
|
428
|
+
: e.detail
|
429
|
+
}
|
430
|
+
})
|
431
|
+
)}
|
432
|
+
><div filter-title slot="header">
|
433
|
+
<md-icon>filter_alt</md-icon> filter by <strong>${column.name}</strong>
|
434
|
+
</div>
|
435
|
+
${renderer(column, value, this)}</ox-popup-list
|
436
|
+
>`
|
437
|
+
: html`<ox-popup-list
|
438
|
+
.value=${value}
|
439
|
+
with-search
|
440
|
+
@select=${(e: CustomEvent) =>
|
441
|
+
e.target?.dispatchEvent(
|
442
|
+
new CustomEvent('filter-change', {
|
443
|
+
bubbles: true,
|
444
|
+
composed: true,
|
445
|
+
detail: {
|
446
|
+
name,
|
447
|
+
operator: filter!.operator,
|
448
|
+
value: e.detail ? e.detail : undefined
|
449
|
+
}
|
450
|
+
})
|
451
|
+
)}
|
452
|
+
><div filter-title slot="header">
|
453
|
+
<md-icon>filter_alt</md-icon> filter by <strong>${column.name}</strong>
|
454
|
+
</div>
|
455
|
+
${renderer(column, value, this)}</ox-popup-list
|
456
|
+
>`}
|
458
457
|
`
|
459
458
|
}
|
460
459
|
|
@@ -471,11 +470,15 @@ export class DataGridHeader extends LitElement {
|
|
471
470
|
if (sorter.desc) {
|
472
471
|
sorters.splice(idx, 1)
|
473
472
|
} else {
|
474
|
-
|
473
|
+
sorters.splice(idx, 1, {
|
474
|
+
...sorter,
|
475
|
+
desc: true
|
476
|
+
})
|
475
477
|
}
|
476
478
|
} else {
|
477
479
|
var sorter = {
|
478
|
-
name: column.name
|
480
|
+
name: column.name,
|
481
|
+
desc: false
|
479
482
|
}
|
480
483
|
|
481
484
|
sorters.push(sorter)
|
@@ -43,6 +43,11 @@ export class DataGrid extends DataManipulator {
|
|
43
43
|
transform: translate(-50%, -50%);
|
44
44
|
}
|
45
45
|
|
46
|
+
div[setting] {
|
47
|
+
position: relative;
|
48
|
+
z-index: 1;
|
49
|
+
}
|
50
|
+
|
46
51
|
@media print {
|
47
52
|
:host {
|
48
53
|
zoom: 80%;
|
@@ -159,7 +164,7 @@ export class DataGrid extends DataManipulator {
|
|
159
164
|
|
160
165
|
if (this.focused && 'row' in this.focused) {
|
161
166
|
var { row = 0, column = 0 } = this.focused
|
162
|
-
var { records: oldrecords = [] } = changes.get('data')
|
167
|
+
var { records: oldrecords = [] } = changes.get('data') || {}
|
163
168
|
var { records: newrecords } = this.data
|
164
169
|
|
165
170
|
var oldrecord = oldrecords[row]
|
@@ -172,8 +177,8 @@ export class DataGrid extends DataManipulator {
|
|
172
177
|
('id' in oldrecord
|
173
178
|
? record.id == oldrecord.id
|
174
179
|
: 'name' in oldrecord
|
175
|
-
|
176
|
-
|
180
|
+
? record.name == oldrecord.name
|
181
|
+
: false)
|
177
182
|
)
|
178
183
|
|
179
184
|
this.focused = {
|
@@ -222,6 +227,10 @@ export class DataGrid extends DataManipulator {
|
|
222
227
|
var data = this.data
|
223
228
|
|
224
229
|
return html`
|
230
|
+
<div setting>
|
231
|
+
<slot name="setting"></slot>
|
232
|
+
</div>
|
233
|
+
|
225
234
|
<ox-grid-header
|
226
235
|
.columns=${columns}
|
227
236
|
.sorters=${this.sorters}
|
@@ -234,7 +243,8 @@ export class DataGrid extends DataManipulator {
|
|
234
243
|
this.calculateWidths(columns)
|
235
244
|
}}
|
236
245
|
@fixed-lefts-change=${(e: CustomEvent) => (this.fixedLefts = e.detail)}
|
237
|
-
|
246
|
+
>
|
247
|
+
</ox-grid-header>
|
238
248
|
|
239
249
|
<ox-grid-body
|
240
250
|
.config=${this.config}
|
package/src/data-grist.ts
CHANGED
@@ -29,6 +29,7 @@ import {
|
|
29
29
|
GristRecord,
|
30
30
|
GristSelectFunction,
|
31
31
|
PaginationConfig,
|
32
|
+
PersonalGristPreference,
|
32
33
|
SortersConfig
|
33
34
|
} from './types'
|
34
35
|
import { convertListParamToSearchString, convertSearchStringToListParam } from './utils'
|
@@ -59,7 +60,7 @@ export class DataGrist extends LitElement implements DataConsumer {
|
|
59
60
|
|
60
61
|
padding: var(--ox-grist-padding);
|
61
62
|
|
62
|
-
--
|
63
|
+
--md-icon-size: var(--grid-record-wide-fontsize);
|
63
64
|
}
|
64
65
|
|
65
66
|
#wrap {
|
@@ -85,7 +86,7 @@ export class DataGrist extends LitElement implements DataConsumer {
|
|
85
86
|
box-sizing: border-box;
|
86
87
|
background-color: var(--grist-background-color);
|
87
88
|
|
88
|
-
z-index:
|
89
|
+
z-index: 2;
|
89
90
|
}
|
90
91
|
`
|
91
92
|
]
|
@@ -170,8 +171,21 @@ export class DataGrist extends LitElement implements DataConsumer {
|
|
170
171
|
*/
|
171
172
|
@property({ type: Boolean, attribute: 'url-params-sensitive' }) urlParamsSensitive?: boolean
|
172
173
|
|
173
|
-
@
|
174
|
-
|
174
|
+
@property({ type: Object }) personalConfigProvider?: {
|
175
|
+
load(): PersonalGristPreference | Promise<PersonalGristPreference | undefined> | undefined
|
176
|
+
save(
|
177
|
+
preference?: PersonalGristPreference
|
178
|
+
): PersonalGristPreference | Promise<PersonalGristPreference | undefined> | undefined
|
179
|
+
reset(): void | Promise<void>
|
180
|
+
}
|
181
|
+
|
182
|
+
@state() personalConfig?: {
|
183
|
+
columns?: Partial<ColumnConfig>[]
|
184
|
+
[key: string]: any
|
185
|
+
}
|
186
|
+
|
187
|
+
@state() _data: GristData = ZERO_DATA // copy data, dirty data
|
188
|
+
@state() _config: GristConfig = ZERO_CONFIG // compiled configuration
|
175
189
|
@state() private _showSpinner: boolean = false
|
176
190
|
|
177
191
|
@query('slot[name=headroom]') head!: HTMLElement
|
@@ -300,9 +314,51 @@ export class DataGrist extends LitElement implements DataConsumer {
|
|
300
314
|
}
|
301
315
|
}
|
302
316
|
|
303
|
-
|
317
|
+
public applyUpdatedConfiguration() {
|
318
|
+
if (!this.config?.columns) {
|
319
|
+
return
|
320
|
+
}
|
321
|
+
|
322
|
+
const config = { ...this.config }
|
323
|
+
const columns: Partial<ColumnConfig>[] = config.columns
|
324
|
+
|
325
|
+
if (this.personalConfig) {
|
326
|
+
const { columns: personalColumns } = this.personalConfig
|
327
|
+
|
328
|
+
if (personalColumns) {
|
329
|
+
const xcolumns = columns.map((column: Partial<ColumnConfig>) => {
|
330
|
+
const personalColumn = personalColumns.find(pcolumn => pcolumn.name == column.name)
|
331
|
+
return personalColumn ? { ...column, ...personalColumn } : column
|
332
|
+
})
|
333
|
+
|
334
|
+
function reorderList(a: { name: string }[], b: { name: string }[]): { name: string }[] {
|
335
|
+
// 결과 배열 초기화, a 배열 길이만큼 undefined로 채움
|
336
|
+
const result = new Array(a.length)
|
337
|
+
|
338
|
+
// b 배열에 없는 아이템은 원래 위치로 채움
|
339
|
+
a.forEach((item, index) => {
|
340
|
+
if (!item.name || !b.find(bi => bi.name == item.name)) {
|
341
|
+
result[index] = item
|
342
|
+
}
|
343
|
+
})
|
344
|
+
|
345
|
+
b.forEach(item => {
|
346
|
+
const ai = a.find(ai => ai.name == item.name)
|
347
|
+
if (ai) {
|
348
|
+
result[result.findIndex(slot => slot === undefined)] = ai
|
349
|
+
}
|
350
|
+
})
|
351
|
+
|
352
|
+
return result
|
353
|
+
}
|
354
|
+
|
355
|
+
// 배열 재정렬 실행
|
356
|
+
config.columns = reorderList(xcolumns as any, personalColumns as any)
|
357
|
+
}
|
358
|
+
}
|
359
|
+
|
304
360
|
this._config = buildConfig({
|
305
|
-
...
|
361
|
+
...config
|
306
362
|
})
|
307
363
|
|
308
364
|
this.dispatchEvent(
|
@@ -401,31 +457,32 @@ export class DataGrist extends LitElement implements DataConsumer {
|
|
401
457
|
.pagination=${this.pagination || {}}
|
402
458
|
?empty=${empty}
|
403
459
|
>
|
460
|
+
<slot name="setting" slot="setting"> </slot>
|
404
461
|
</ox-grid>
|
405
462
|
`
|
406
463
|
: this.mode == 'CARD'
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
464
|
+
? html`
|
465
|
+
<ox-card
|
466
|
+
id="grist"
|
467
|
+
.config=${this.compiledConfig}
|
468
|
+
.data=${this._data}
|
469
|
+
.sorters=${this.sorters || []}
|
470
|
+
.filters=${this.filters || []}
|
471
|
+
?empty=${empty}
|
472
|
+
>
|
473
|
+
</ox-card>
|
474
|
+
`
|
475
|
+
: html`
|
476
|
+
<ox-list
|
477
|
+
id="grist"
|
478
|
+
.config=${this.compiledConfig}
|
479
|
+
.data=${this._data}
|
480
|
+
.sorters=${this.sorters || []}
|
481
|
+
.filters=${this.filters || []}
|
482
|
+
?empty=${empty}
|
483
|
+
>
|
484
|
+
</ox-list>
|
485
|
+
`}
|
429
486
|
</div>
|
430
487
|
|
431
488
|
<div id="spinner" ?show=${this._showSpinner}></div>
|
@@ -532,8 +589,10 @@ export class DataGrist extends LitElement implements DataConsumer {
|
|
532
589
|
await this.requestUpdate()
|
533
590
|
}
|
534
591
|
|
535
|
-
if (changes.has('
|
536
|
-
this.
|
592
|
+
if (changes.has('personalConfigProvider') && this.personalConfigProvider) {
|
593
|
+
this.personalConfig = await this.personalConfigProvider.load()
|
594
|
+
} else if (changes.has('config') || changes.has('personalConfig')) {
|
595
|
+
this.applyUpdatedConfiguration()
|
537
596
|
}
|
538
597
|
|
539
598
|
if (changes.has('fetchHandler')) {
|
@@ -22,6 +22,18 @@ export class DataListGutter extends LitElement {
|
|
22
22
|
font-size: var(--grid-record-wide-fontsize);
|
23
23
|
text-overflow: ellipsis;
|
24
24
|
color: var(--grid-record-color);
|
25
|
+
|
26
|
+
padding-right: 10px;
|
27
|
+
}
|
28
|
+
|
29
|
+
:host-context(.expand)::after {
|
30
|
+
content: '';
|
31
|
+
position: absolute;
|
32
|
+
left: 50%;
|
33
|
+
top: 50%;
|
34
|
+
transform: translate(-50%, -50%);
|
35
|
+
width: 150%;
|
36
|
+
height: 220%;
|
25
37
|
}
|
26
38
|
|
27
39
|
* {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import '@material/
|
1
|
+
import '@material/web/icon/icon.js'
|
2
2
|
import './record-partial'
|
3
3
|
|
4
4
|
import { css, html, PropertyValues } from 'lit'
|
@@ -25,7 +25,7 @@ export class DataList extends DataManipulator {
|
|
25
25
|
}
|
26
26
|
|
27
27
|
#upward {
|
28
|
-
--
|
28
|
+
--md-icon-size: 26px;
|
29
29
|
position: absolute;
|
30
30
|
top: var(--data-list-fab-position-vertical);
|
31
31
|
right: var(--data-list-fab-position-horizontal);
|
@@ -118,7 +118,7 @@ export class DataList extends DataManipulator {
|
|
118
118
|
${this.empty ? html` <ox-empty-note title="NO RECORDS"></ox-empty-note> ` : html``}
|
119
119
|
${this.isTop
|
120
120
|
? html``
|
121
|
-
: html` <
|
121
|
+
: html` <md-icon id="upward" @click=${(e: Event) => this.gotoTop(e)}>arrow_upward</md-icon> `}
|
122
122
|
`
|
123
123
|
}
|
124
124
|
|
@@ -29,6 +29,6 @@ export function recordPartialClickHandler(this: RecordPartial, e: MouseEvent): v
|
|
29
29
|
rowsClick(this.config.columns, this.data, column, this.record, rowIndex, target)
|
30
30
|
} else {
|
31
31
|
/* content 가 클릭된 경우 - 레코드뷰 팝업을 실행한다. */
|
32
|
-
this.popupRecordView()
|
32
|
+
this.config.rows.editable && this.popupRecordView()
|
33
33
|
}
|
34
34
|
}
|