@operato/data-grist 2.0.0-alpha.7 → 2.0.0-alpha.80
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 +297 -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/accumulator/accumulator.js +4 -4
- package/dist/src/accumulator/accumulator.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 +8 -3
- package/dist/src/data-grid/data-grid-accum-field.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 +9 -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 +2 -2
- 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 +37 -37
- 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 +1 -1
- package/dist/src/data-grid/data-grid.js.map +1 -1
- package/dist/src/data-grist.d.ts +226 -4
- package/dist/src/data-grist.js +217 -25
- 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-manipulator.d.ts +6 -6
- package/dist/src/data-manipulator.js +44 -29
- package/dist/src/data-manipulator.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-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 -12
- 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-range-date.js +12 -1
- package/dist/src/filters/filter-range-date.js.map +1 -1
- package/dist/src/filters/filters-form.d.ts +1 -0
- package/dist/src/filters/filters-form.js +41 -23
- 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 +5 -23
- package/dist/src/handlers/contextmenu-tree-mutation.js.map +1 -1
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.js +0 -1
- package/dist/src/index.js.map +1 -1
- 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-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 +1 -8
- package/dist/src/types.js.map +1 -1
- package/dist/stories/accumulator.stories.d.ts +1 -1
- package/dist/stories/accumulator.stories.js +126 -112
- package/dist/stories/accumulator.stories.js.map +1 -1
- package/dist/stories/barcode-input-filter.stories.d.ts +1 -1
- package/dist/stories/barcode-input-filter.stories.js +80 -72
- package/dist/stories/barcode-input-filter.stories.js.map +1 -1
- package/dist/stories/default-filters.stories.d.ts +1 -1
- package/dist/stories/default-filters.stories.js +80 -72
- 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 +100 -79
- 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 +80 -71
- 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 +81 -72
- 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 +122 -113
- package/dist/stories/fixed-column.stories.js.map +1 -1
- package/dist/stories/grist-modes.stories.d.ts +1 -1
- package/dist/stories/grist-modes.stories.js +155 -125
- 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 +122 -113
- 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 +113 -104
- 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 +126 -117
- 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 +126 -117
- 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 +2 -2
- package/docs/default-value/value-generator/month-date-generator.md +2 -2
- package/docs/default-value/value-generator/week-date-generator.md +2 -2
- package/docs/default-value/value-generator/year-date-generator.md +2 -2
- package/package.json +21 -20
- package/src/accumulator/accumulator.ts +4 -4
- 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 -3
- package/src/data-grid/data-grid-body.ts +10 -5
- package/src/data-grid/data-grid-field.ts +1 -1
- package/src/data-grid/data-grid-footer.ts +18 -11
- package/src/data-grid/data-grid-header.ts +67 -68
- package/src/data-grid/data-grid.ts +3 -3
- package/src/data-grist.ts +274 -27
- 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/data-manipulator.ts +52 -31
- 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 +11 -9
- 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 -10
- package/src/empty-note.ts +3 -3
- package/src/filters/filter-range-date.ts +16 -1
- package/src/filters/filters-form.ts +69 -46
- package/src/gutters/gutter-button.ts +3 -3
- package/src/gutters/gutter-dirty.ts +5 -5
- package/src/handlers/contextmenu-tree-mutation.ts +5 -23
- package/src/index.ts +0 -1
- 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/sorters/sorters-control.ts +3 -3
- package/src/types.ts +1 -9
- package/stories/accumulator.stories.ts +128 -118
- package/stories/barcode-input-filter.stories.ts +91 -82
- package/stories/default-filters.stories.ts +91 -82
- package/stories/dynamic-editable.stories.ts +108 -86
- package/stories/empty-sorters.stories.ts +92 -82
- package/stories/explicit-fetch.stories.ts +93 -83
- package/stories/fixed-column.stories.ts +134 -124
- package/stories/grist-modes.stories.ts +167 -141
- package/stories/group-header.stories.ts +134 -124
- package/stories/textarea.stories.ts +115 -110
- package/stories/tree-column-with-checkbox.stories.ts +134 -124
- package/stories/tree-column.stories.ts +134 -124
- package/themes/grist-theme.css +1 -1
- 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/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
@@ -12,7 +12,7 @@ function getRelativeDate(params: RelativeDateParams = {}): Date | number | strin
|
|
12
12
|
|
13
13
|
이 함수는 `RelativeDateParams`라는 이름의 타입의 매개변수 객체를 받습니다. 이 객체의 필드에 대한 상세한 정보는 다음과 같습니다:
|
14
14
|
|
15
|
-
- `
|
15
|
+
- `relativeDays?: number`: 상대적인 날짜를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
|
16
16
|
|
17
17
|
- `timeZone?: string`: 날짜를 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
|
18
18
|
|
@@ -29,7 +29,7 @@ function getRelativeDate(params: RelativeDateParams = {}): Date | number | strin
|
|
29
29
|
|
30
30
|
```typescript
|
31
31
|
const relativeDate = getRelativeDate({
|
32
|
-
|
32
|
+
relativeDays: 1,
|
33
33
|
timeZone: 'Asia/Seoul',
|
34
34
|
format: 'date'
|
35
35
|
})
|
@@ -14,7 +14,7 @@ function getRelativeMonthDate(params: RelativeMonthDateParams = {}): string | nu
|
|
14
14
|
|
15
15
|
- `relativeMonths?: number`: 상대적인 월을 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 월 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3개월 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 월을 의미합니다.
|
16
16
|
|
17
|
-
- `
|
17
|
+
- `relativeDays?: number`: 상대적인 일수를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 2이면 현재 날짜로부터 2일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
|
18
18
|
|
19
19
|
- `timeZone?: string`: 날짜를 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
|
20
20
|
|
@@ -32,7 +32,7 @@ function getRelativeMonthDate(params: RelativeMonthDateParams = {}): string | nu
|
|
32
32
|
```typescript
|
33
33
|
const relativeMonthDate = getRelativeMonthDate({
|
34
34
|
relativeMonths: 2,
|
35
|
-
|
35
|
+
relativeDays: 3,
|
36
36
|
timeZone: 'Asia/Seoul',
|
37
37
|
format: 'date'
|
38
38
|
})
|
@@ -14,7 +14,7 @@ function getRelativeWeekDate(params: RelativeWeekDateParams = {}): string | numb
|
|
14
14
|
|
15
15
|
- `relativeWeeks?: number`: 상대적인 주를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 주 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3주 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 주를 의미합니다.
|
16
16
|
|
17
|
-
- `
|
17
|
+
- `relativeDays?: number`: 상대적인 일수를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 2이면 현재 날짜로부터 2일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
|
18
18
|
|
19
19
|
- `timeZone?: string`: 날짜를 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
|
20
20
|
|
@@ -32,7 +32,7 @@ function getRelativeWeekDate(params: RelativeWeekDateParams = {}): string | numb
|
|
32
32
|
```typescript
|
33
33
|
const relativeWeekDate = getRelativeWeekDate({
|
34
34
|
relativeWeeks: 2,
|
35
|
-
|
35
|
+
relativeDays: 3,
|
36
36
|
timeZone: 'Asia/Seoul',
|
37
37
|
format: 'date'
|
38
38
|
})
|
@@ -14,7 +14,7 @@ function getRelativeYearDate(params: RelativeYearDateParams = {}): string | numb
|
|
14
14
|
|
15
15
|
- `relativeYears?: number`: 상대적인 연도를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 연도 수를 나타냅니다. 예를 들어, 이 값이 3이면 현재 날짜로부터 3년 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 연도를 의미합니다.
|
16
16
|
|
17
|
-
- `
|
17
|
+
- `relativeDays?: number`: 상대적인 일수를 나타내는 숫자입니다. 이 값은 현재 날짜로부터의 일 수를 나타냅니다. 예를 들어, 이 값이 2이면 현재 날짜로부터 2일 뒤를 나타냅니다. 이 값이 주어지지 않으면 기본값은 0입니다, 즉 현재 날짜를 의미합니다.
|
18
18
|
|
19
19
|
- `timeZone?: string`: 날짜를 얻고자 하는 시간대를 나타내는 문자열입니다. 이 값이 주어지지 않으면 사용자의 로컬 시간대가 사용됩니다.
|
20
20
|
|
@@ -32,7 +32,7 @@ function getRelativeYearDate(params: RelativeYearDateParams = {}): string | numb
|
|
32
32
|
```typescript
|
33
33
|
const relativeYearDate = getRelativeYearDate({
|
34
34
|
relativeYears: 2,
|
35
|
-
|
35
|
+
relativeDays: 3,
|
36
36
|
timeZone: 'Asia/Seoul',
|
37
37
|
format: 'date'
|
38
38
|
})
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@operato/data-grist",
|
3
|
-
"version": "2.0.0-alpha.
|
3
|
+
"version": "2.0.0-alpha.80",
|
4
4
|
"description": "User interface for grid (desktop) and list (mobile)",
|
5
5
|
"author": "heartyoh",
|
6
6
|
"main": "dist/index.js",
|
@@ -55,35 +55,36 @@
|
|
55
55
|
"storybook:build": "tsc && build-storybook"
|
56
56
|
},
|
57
57
|
"dependencies": {
|
58
|
-
"@material/
|
59
|
-
"@operato/headroom": "^2.0.0-alpha.
|
60
|
-
"@operato/input": "^2.0.0-alpha.
|
61
|
-
"@operato/popup": "^2.0.0-alpha.
|
62
|
-
"@operato/pull-to-refresh": "^2.0.0-alpha.
|
63
|
-
"@operato/styles": "^2.0.0-alpha.
|
64
|
-
"@operato/
|
58
|
+
"@material/web": "^1.4.0",
|
59
|
+
"@operato/headroom": "^2.0.0-alpha.57",
|
60
|
+
"@operato/input": "^2.0.0-alpha.80",
|
61
|
+
"@operato/popup": "^2.0.0-alpha.80",
|
62
|
+
"@operato/pull-to-refresh": "^2.0.0-alpha.57",
|
63
|
+
"@operato/styles": "^2.0.0-alpha.80",
|
64
|
+
"@operato/time-calculator": "^2.0.0-alpha.57",
|
65
|
+
"@operato/utils": "^2.0.0-alpha.68",
|
65
66
|
"i18next": "^21.5.4",
|
66
67
|
"json5": "^2.2.0",
|
67
|
-
"lit": "^
|
68
|
+
"lit": "^3.1.2",
|
68
69
|
"lodash-es": "^4.17.21"
|
69
70
|
},
|
70
71
|
"devDependencies": {
|
71
|
-
"@custom-elements-manifest/analyzer": "^0.
|
72
|
+
"@custom-elements-manifest/analyzer": "^0.9.2",
|
72
73
|
"@hatiolab/prettier-config": "^1.0.0",
|
73
|
-
"@open-wc/eslint-config": "^
|
74
|
+
"@open-wc/eslint-config": "^12.0.3",
|
74
75
|
"@open-wc/testing": "^3.1.6",
|
75
76
|
"@types/lodash-es": "^4.17.5",
|
76
|
-
"@typescript-eslint/eslint-plugin": "^
|
77
|
-
"@typescript-eslint/parser": "^
|
77
|
+
"@typescript-eslint/eslint-plugin": "^7.0.1",
|
78
|
+
"@typescript-eslint/parser": "^7.0.1",
|
78
79
|
"@web/dev-server": "^0.3.0",
|
79
|
-
"@web/dev-server-storybook": "^0.
|
80
|
-
"@web/test-runner": "^0.
|
80
|
+
"@web/dev-server-storybook": "^2.0.1",
|
81
|
+
"@web/test-runner": "^0.18.0",
|
81
82
|
"concurrently": "^8.0.1",
|
82
83
|
"eslint": "^8.39.0",
|
83
|
-
"eslint-config-prettier": "^
|
84
|
-
"husky": "^
|
85
|
-
"lint-staged": "^
|
86
|
-
"prettier": "^2.
|
84
|
+
"eslint-config-prettier": "^9.1.0",
|
85
|
+
"husky": "^9.0.11",
|
86
|
+
"lint-staged": "^15.2.2",
|
87
|
+
"prettier": "^3.2.5",
|
87
88
|
"tslib": "^2.3.1",
|
88
89
|
"typescript": "^5.0.4"
|
89
90
|
},
|
@@ -100,5 +101,5 @@
|
|
100
101
|
"prettier --write"
|
101
102
|
]
|
102
103
|
},
|
103
|
-
"gitHead": "
|
104
|
+
"gitHead": "9405ad5252a157db9c9680256a6cb65f764a890b"
|
104
105
|
}
|
@@ -6,7 +6,7 @@ function sum(data: GristData, column: ColumnConfig): number {
|
|
6
6
|
return data.records
|
7
7
|
.filter(record => !Number.isNaN(record[name]))
|
8
8
|
.reduce((sum, record) => {
|
9
|
-
return sum + Number(record[name])
|
9
|
+
return sum + Number(record[name] || 0)
|
10
10
|
}, 0)
|
11
11
|
}
|
12
12
|
|
@@ -16,7 +16,7 @@ function avg(data: GristData, column: ColumnConfig): number {
|
|
16
16
|
|
17
17
|
return (
|
18
18
|
effectiveRecords.reduce((sum, record) => {
|
19
|
-
return sum + Number(record[name])
|
19
|
+
return sum + Number(record[name] || 0)
|
20
20
|
}, 0) / effectiveRecords.length
|
21
21
|
)
|
22
22
|
}
|
@@ -30,7 +30,7 @@ function min(data: GristData, column: ColumnConfig): number {
|
|
30
30
|
|
31
31
|
return Math.min.apply(
|
32
32
|
null,
|
33
|
-
data.records.filter(record => !Number.isNaN(record[name])).map(record => Number(record[name]))
|
33
|
+
data.records.filter(record => !Number.isNaN(record[name])).map(record => Number(record[name] || 0))
|
34
34
|
)
|
35
35
|
}
|
36
36
|
|
@@ -39,7 +39,7 @@ function max(data: GristData, column: ColumnConfig): number {
|
|
39
39
|
|
40
40
|
return Math.max.apply(
|
41
41
|
null,
|
42
|
-
data.records.filter(record => !Number.isNaN(record[name])).map(record => Number(record[name]))
|
42
|
+
data.records.filter(record => !Number.isNaN(record[name])).map(record => Number(record[name] || 0))
|
43
43
|
)
|
44
44
|
}
|
45
45
|
|
@@ -3,7 +3,16 @@ import { RowsConfig } from '../types'
|
|
3
3
|
import { getGristEventHandler } from '../handlers'
|
4
4
|
|
5
5
|
export const buildRowsOptions = (rows: any): RowsConfig => {
|
6
|
-
var {
|
6
|
+
var {
|
7
|
+
appendable = true,
|
8
|
+
editable = true,
|
9
|
+
insertable = false,
|
10
|
+
selectable,
|
11
|
+
groups = [],
|
12
|
+
totals = [],
|
13
|
+
classifier,
|
14
|
+
accumulator
|
15
|
+
} = rows
|
7
16
|
|
8
17
|
/* handler */
|
9
18
|
var { click, dblclick, focus } = rows.handlers || {}
|
@@ -14,6 +23,7 @@ export const buildRowsOptions = (rows: any): RowsConfig => {
|
|
14
23
|
return {
|
15
24
|
accumulator,
|
16
25
|
appendable,
|
26
|
+
editable,
|
17
27
|
insertable,
|
18
28
|
selectable,
|
19
29
|
groups,
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import '@material/
|
1
|
+
import '@material/web/icon/icon.js'
|
2
2
|
import './data-card-gutter.js'
|
3
3
|
|
4
4
|
import { css, html, LitElement } from 'lit'
|
@@ -19,7 +19,7 @@ class DataCardGutterMenu extends LitElement {
|
|
19
19
|
padding: 4px;
|
20
20
|
}
|
21
21
|
|
22
|
-
|
22
|
+
md-icon {
|
23
23
|
flex: 1;
|
24
24
|
margin: 0;
|
25
25
|
margin-bottom: 1px;
|
@@ -29,7 +29,7 @@ class DataCardGutterMenu extends LitElement {
|
|
29
29
|
font-size: var(--grid-record-fontsize);
|
30
30
|
}
|
31
31
|
|
32
|
-
|
32
|
+
md-icon:hover {
|
33
33
|
cursor: pointer;
|
34
34
|
color: var(--grid-record-color-hover);
|
35
35
|
}
|
@@ -41,11 +41,11 @@ class DataCardGutterMenu extends LitElement {
|
|
41
41
|
@property() clickHandler!: EventListener
|
42
42
|
@property() dblclickHandler!: EventListener
|
43
43
|
|
44
|
-
@query('
|
44
|
+
@query('md-icon') icon!: Element
|
45
45
|
|
46
46
|
render() {
|
47
47
|
return html`
|
48
|
-
<
|
48
|
+
<md-icon @click=${(e: Event) => this.open(e)}>more_horiz</md-icon>
|
49
49
|
<slot></slot>
|
50
50
|
`
|
51
51
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import '@material/
|
1
|
+
import '@material/web/icon/icon.js'
|
2
2
|
import '../empty-note'
|
3
3
|
import './record-card'
|
4
4
|
|
@@ -42,7 +42,7 @@ export class DataCard extends DataManipulator {
|
|
42
42
|
}
|
43
43
|
|
44
44
|
#upward {
|
45
|
-
--
|
45
|
+
--md-icon-size: 26px;
|
46
46
|
position: absolute;
|
47
47
|
top: var(--data-card-fab-position-vertical);
|
48
48
|
right: var(--data-card-fab-position-horizontal);
|
@@ -142,7 +142,7 @@ export class DataCard extends DataManipulator {
|
|
142
142
|
${this.empty ? html` <ox-empty-note title="NO RECORDS"></ox-empty-note> ` : html``}
|
143
143
|
${this.isTop
|
144
144
|
? html``
|
145
|
-
: html` <
|
145
|
+
: html` <md-icon id="upward" @click=${(e: Event) => this.gotoTop(e)}>arrow_upward</md-icon> `}
|
146
146
|
`
|
147
147
|
}
|
148
148
|
|
@@ -29,6 +29,6 @@ export function recordCardClickHandler(this: RecordCard, e: MouseEvent): void {
|
|
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
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import '@material/
|
1
|
+
import '@material/web/icon/icon.js'
|
2
2
|
import './data-card-field'
|
3
3
|
import '../record-view'
|
4
4
|
import './data-card-gutter'
|
@@ -183,7 +183,7 @@ export class RecordCard extends LitElement {
|
|
183
183
|
}
|
184
184
|
|
185
185
|
return html`
|
186
|
-
${dirtyIcon ? html` <
|
186
|
+
${dirtyIcon ? html` <md-icon dirty>${dirtyIcon}</md-icon> ` : html``}
|
187
187
|
${thumbnailColumn
|
188
188
|
? html` <ox-card-field
|
189
189
|
thumbnail
|
@@ -216,46 +216,44 @@ export class RecordCard extends LitElement {
|
|
216
216
|
></ox-card-gutter>
|
217
217
|
`
|
218
218
|
: gutters.length > 2
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
219
|
+
? html`
|
220
|
+
<ox-card-gutter-menu
|
221
|
+
.gutters=${gutters}
|
222
|
+
.rowIndex=${rowIndex}
|
223
|
+
.record=${record}
|
224
|
+
.clickHandler=${this.clickHandler}
|
225
|
+
.dblclickHandler=${this.dblclickHandler}
|
226
|
+
></ox-card-gutter-menu>
|
227
|
+
`
|
228
|
+
: html``}
|
229
229
|
</div>
|
230
230
|
|
231
231
|
<div brief>
|
232
232
|
${briefFields.map(
|
233
|
-
(column, idx) =>
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
`
|
233
|
+
(column, idx) => html`
|
234
|
+
<ox-card-field
|
235
|
+
.rowIndex=${rowIndex}
|
236
|
+
.column=${column}
|
237
|
+
.record=${record}
|
238
|
+
.value=${record[column?.name || '']}
|
239
|
+
?name=${idx == 0}
|
240
|
+
?desc=${idx == 1}
|
241
|
+
></ox-card-field>
|
242
|
+
`
|
244
243
|
)}
|
245
244
|
</div>
|
246
245
|
${detailFields.length > 0
|
247
246
|
? html`
|
248
247
|
<div detail>
|
249
248
|
${detailFields.map(
|
250
|
-
(column, idx) =>
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
`
|
249
|
+
(column, idx) => html`
|
250
|
+
<ox-card-field
|
251
|
+
.rowIndex=${rowIndex}
|
252
|
+
.column=${column}
|
253
|
+
.record=${record}
|
254
|
+
.value=${record[column?.name || '']}
|
255
|
+
></ox-card-field>
|
256
|
+
`
|
259
257
|
)}
|
260
258
|
</div>
|
261
259
|
`
|
@@ -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
|
|
@@ -62,7 +66,7 @@ export class DataGridAccumField extends LitElement {
|
|
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
|
@@ -70,11 +74,12 @@ export class DataGridAccumField extends LitElement {
|
|
70
74
|
|
71
75
|
// tag가 true이면 value 앞에 (sum) 같은 태그 생성
|
72
76
|
var { accumulator } = column
|
77
|
+
let tag = ''
|
73
78
|
if (typeof accumulator === 'object' && typeof accumulator.type === 'string' && accumulator?.tag) {
|
74
|
-
|
79
|
+
tag = `(${i18next.t(`label.accumulator_${accumulator.type}`)})`
|
75
80
|
}
|
76
81
|
|
77
|
-
return html`${renderer?.call(this, value, column, record, rowIndex, this)}`
|
82
|
+
return html`${tag} ${renderer?.call(this, value, column, record, rowIndex, this)}`
|
78
83
|
}
|
79
84
|
|
80
85
|
updated(changes: PropertyValues<this>) {
|
@@ -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,14 +647,19 @@ 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':
|
660
|
+
case 'float':
|
661
|
+
case 'integer':
|
662
|
+
case 'progress':
|
658
663
|
value = parseToNumberOrNull(value)
|
659
664
|
break
|
660
665
|
default:
|
@@ -87,7 +87,7 @@ 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
92
|
@property({ type: String }) fixed?: string
|
93
93
|
@property({ type: String }) type?: string
|
@@ -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>
|