diff --git a/backend/src/baserow/contrib/database/fields/field_types.py b/backend/src/baserow/contrib/database/fields/field_types.py index 82831793db..fcc210dda0 100755 --- a/backend/src/baserow/contrib/database/fields/field_types.py +++ b/backend/src/baserow/contrib/database/fields/field_types.py @@ -910,16 +910,29 @@ def prepare_value_for_db(self, instance, value): return value def get_serializer_field(self, instance, **kwargs): - return serializers.IntegerField( - **{ - "required": False, - "allow_null": False, - "min_value": 0, - "default": 0, - "max_value": instance.max_value, - **kwargs, - } - ) + required = kwargs.get("required", False) + field_kwargs = { + "required": False, + "allow_null": False, + "min_value": 0, + "default": 0, + "max_value": instance.max_value, + **kwargs, + } + if required: + field_kwargs.pop("default", None) + validators = field_kwargs.get("validators", []) + validators.append(self._rating_required_validator) + field_kwargs["validators"] = validators + return serializers.IntegerField(**field_kwargs) + + @staticmethod + def _rating_required_validator(value): + if value == 0: + raise ValidationError( + "This field is required.", + code="required", + ) def force_same_type_alter_column(self, from_field, to_field): """ diff --git a/backend/tests/baserow/contrib/database/api/views/form/test_form_view_views.py b/backend/tests/baserow/contrib/database/api/views/form/test_form_view_views.py index 6780ff9999..9015393dcc 100644 --- a/backend/tests/baserow/contrib/database/api/views/form/test_form_view_views.py +++ b/backend/tests/baserow/contrib/database/api/views/form/test_form_view_views.py @@ -2995,6 +2995,89 @@ def test_submit_form_view_for_required_number_field_with_0(api_client, data_fixt } +@pytest.mark.django_db +def test_submit_form_view_for_required_rating_field_with_0(api_client, data_fixture): + user, token = data_fixture.create_user_and_token() + table = data_fixture.create_database_table(user=user) + form = data_fixture.create_form_view( + table=table, + submit_action_message="Test", + submit_action_redirect_url="https://baserow.io", + ) + rating_field = data_fixture.create_rating_field(table=table) + data_fixture.create_form_view_field_option( + form, rating_field, required=True, enabled=True, order=2 + ) + + url = reverse("api:database:views:form:submit", kwargs={"slug": form.slug}) + + # Submitting 0 should fail because 0 means "no rating" for a required rating field + response = api_client.post( + url, + {f"field_{rating_field.id}": 0}, + format="json", + HTTP_AUTHORIZATION=f"JWT {token}", + ) + assert response.status_code == HTTP_400_BAD_REQUEST + response_json = response.json() + assert response_json["detail"][f"field_{rating_field.id}"][0]["code"] == "required" + + # Submitting a valid rating should succeed + response = api_client.post( + url, + {f"field_{rating_field.id}": 3}, + format="json", + HTTP_AUTHORIZATION=f"JWT {token}", + ) + assert response.status_code == HTTP_200_OK + response_json = response.json() + assert response_json == { + "row_id": AnyInt(), + "submit_action": "MESSAGE", + "submit_action_message": "Test", + "submit_action_redirect_url": "https://baserow.io", + } + + +@pytest.mark.django_db +def test_submit_form_view_for_non_required_rating_field_with_0( + api_client, data_fixture +): + """ + Submitting 0 should succeed when the rating field is not required. + """ + + user, token = data_fixture.create_user_and_token() + table = data_fixture.create_database_table(user=user) + form = data_fixture.create_form_view( + table=table, + submit_action_message="Test", + submit_action_redirect_url="https://baserow.io", + ) + rating_field = data_fixture.create_rating_field(table=table) + data_fixture.create_form_view_field_option( + form, rating_field, required=False, enabled=True, order=2 + ) + + url = reverse("api:database:views:form:submit", kwargs={"slug": form.slug}) + + response = api_client.post( + url, + {f"field_{rating_field.id}": 0}, + format="json", + HTTP_AUTHORIZATION=f"JWT {token}", + ) + + assert response.status_code == HTTP_200_OK + response_json = response.json() + assert response_json == { + "row_id": AnyInt(), + "submit_action": "MESSAGE", + "submit_action_message": "Test", + "submit_action_redirect_url": "https://baserow.io", + } + + @pytest.mark.django_db def test_upload_file_view(api_client, data_fixture, tmpdir): user, token = data_fixture.create_user_and_token( diff --git a/changelog/entries/unreleased/bug/4985_rating_field_0.json b/changelog/entries/unreleased/bug/4985_rating_field_0.json new file mode 100644 index 0000000000..5905fbb9fb --- /dev/null +++ b/changelog/entries/unreleased/bug/4985_rating_field_0.json @@ -0,0 +1,9 @@ +{ + "type": "bug", + "message": "Rating field now doesn't accept 0 as a valid value in form views when the field is required", + "issue_origin": "github", + "issue_number": 4985, + "domain": "database", + "bullet_points": [], + "created_at": "2026-03-30" +} diff --git a/web-frontend/justfile b/web-frontend/justfile index 0148f15bd3..04300b604c 100644 --- a/web-frontend/justfile +++ b/web-frontend/justfile @@ -102,10 +102,10 @@ test *ARGS: ci-test: yarn test:coverage -# Update Jest snapshots +# Update Vitest snapshots [group('3 - testing')] update-snapshots: - yarn test --update + EXTRA_VITEST_PARAMS="--update" yarn test # ============================================================================= # Development diff --git a/web-frontend/modules/database/components/field/DuplicateFieldModal.vue b/web-frontend/modules/database/components/field/DuplicateFieldModal.vue index 9d72e67201..3ff96d7549 100644 --- a/web-frontend/modules/database/components/field/DuplicateFieldModal.vue +++ b/web-frontend/modules/database/components/field/DuplicateFieldModal.vue @@ -122,6 +122,7 @@ export default { position: 'right', fromField: this.fromField, undoRedoActionGroupId: this.actionGroupId, + visible: true, }) this.onDuplicationEnd() } diff --git a/web-frontend/modules/database/components/field/InsertFieldContext.vue b/web-frontend/modules/database/components/field/InsertFieldContext.vue index 648a7a4ecf..9129cf2e86 100644 --- a/web-frontend/modules/database/components/field/InsertFieldContext.vue +++ b/web-frontend/modules/database/components/field/InsertFieldContext.vue @@ -59,6 +59,7 @@ export default { position: this.position, fromField: this.fromField, undoRedoActionGroupId, + visible: true, // when inserting a new field, it should always be visible }) }, toggle(ref, position) { diff --git a/web-frontend/modules/database/components/row/RowEditFieldRating.vue b/web-frontend/modules/database/components/row/RowEditFieldRating.vue index f13c46aade..52811d6225 100644 --- a/web-frontend/modules/database/components/row/RowEditFieldRating.vue +++ b/web-frontend/modules/database/components/row/RowEditFieldRating.vue @@ -10,6 +10,9 @@ @update="update" /> +
+ {{ getError() }} +
diff --git a/web-frontend/modules/database/components/view/grid/GridViewGroup.vue b/web-frontend/modules/database/components/view/grid/GridViewGroup.vue index 64970b4b0d..8f48b0718c 100644 --- a/web-frontend/modules/database/components/view/grid/GridViewGroup.vue +++ b/web-frontend/modules/database/components/view/grid/GridViewGroup.vue @@ -2,7 +2,12 @@
- +
{{ count }} @@ -19,8 +24,8 @@ export default { type: Object, required: true, }, - field: { - type: Object, + allFieldsInTable: { + type: Array, required: true, }, value: { @@ -33,9 +38,24 @@ export default { }, }, computed: { + field() { + return this.getField(this.allFieldsInTable, this.groupBy) + }, groupByComponent() { - const fieldType = this.$registry.get('field', this.field.type) - return fieldType.getGroupByComponent(this.field) + if (!this.field) { + return null + } + return this.getGroupByComponent(this.field, this) + }, + }, + methods: { + getField(allFieldsInTable, groupBy) { + const field = allFieldsInTable.find((f) => f.id === groupBy.field) + return field + }, + getGroupByComponent(field, parent) { + const fieldType = parent.$registry.get('field', field.type) + return fieldType.getGroupByComponent(field) }, }, } diff --git a/web-frontend/modules/database/components/view/grid/GridViewGroups.vue b/web-frontend/modules/database/components/view/grid/GridViewGroups.vue index 215237ef61..df0dbbd537 100644 --- a/web-frontend/modules/database/components/view/grid/GridViewGroups.vue +++ b/web-frontend/modules/database/components/view/grid/GridViewGroups.vue @@ -20,7 +20,7 @@ > @@ -40,6 +40,14 @@ export default { components: { GridViewGroup }, mixins: [gridViewHelpers], props: { + /** + * All the fields in the table, regardless of the visibility, or whether they + * should be rendered. + */ + allFieldsInTable: { + type: Array, + required: true, + }, groupByValueSets: { type: Array, required: true, diff --git a/web-frontend/modules/database/components/view/grid/GridViewHead.vue b/web-frontend/modules/database/components/view/grid/GridViewHead.vue index f09c44bb9d..dd97c04ee2 100644 --- a/web-frontend/modules/database/components/view/grid/GridViewHead.vue +++ b/web-frontend/modules/database/components/view/grid/GridViewHead.vue @@ -1,12 +1,13 @@ diff --git a/web-frontend/modules/database/fieldTypes.js b/web-frontend/modules/database/fieldTypes.js index 1a8c079c09..c0aa93635b 100644 --- a/web-frontend/modules/database/fieldTypes.js +++ b/web-frontend/modules/database/fieldTypes.js @@ -114,7 +114,6 @@ import RowCardFieldEmail from '@baserow/modules/database/components/card/RowCard import RowCardFieldFile from '@baserow/modules/database/components/card/RowCardFieldFile' import RowCardFieldFormula from '@baserow/modules/database/components/card/RowCardFieldFormula' import RowCardFieldLinkRow from '@baserow/modules/database/components/card/RowCardFieldLinkRow' -import GroupByFieldLinkRow from '@baserow/modules/database/components/view/grid/GroupByFieldLinkRow' import RowCardFieldMultipleSelect from '@baserow/modules/database/components/card/RowCardFieldMultipleSelect' import RowCardFieldNumber from '@baserow/modules/database/components/card/RowCardFieldNumber' import RowCardFieldRating from '@baserow/modules/database/components/card/RowCardFieldRating' @@ -1361,10 +1360,6 @@ export class LinkRowFieldType extends FieldType { return RowCardFieldLinkRow } - getGroupByComponent() { - return GroupByFieldLinkRow - } - getRowHistoryEntryComponent() { return RowHistoryFieldLinkRow } @@ -1392,8 +1387,8 @@ export class LinkRowFieldType extends FieldType { } isEqual(field, value1, value2) { - const value1Ids = value1.map((v) => v.id) - const value2Ids = value2.map((v) => v.id) + const value1Ids = (value1 || []).map((v) => v.id) + const value2Ids = (value2 || []).map((v) => v.id) return _.isEqual(value1Ids, value2Ids) } @@ -1994,6 +1989,13 @@ export class RatingFieldType extends FieldType { return 0 } + isEmpty(field, value) { + if (value === 0) { + return true + } + return super.isEmpty(field, value) + } + canUpsert() { return true } @@ -4267,14 +4269,6 @@ export class FormulaFieldType extends mix( return RowCardFieldFormula } - getGroupByComponent(field) { - const formulaType = this.getFormulaType(field) - if (formulaType) { - return formulaType.getCardComponent(field) - } - return this.getCardComponent(field) - } - getFilterInputComponent(field, filterType) { return this.getFormulaType(field)?.getFilterInputComponent( field, diff --git a/web-frontend/modules/database/mixins/gridViewHelpers.js b/web-frontend/modules/database/mixins/gridViewHelpers.js index 171d9f84b7..c23e22dfb1 100644 --- a/web-frontend/modules/database/mixins/gridViewHelpers.js +++ b/web-frontend/modules/database/mixins/gridViewHelpers.js @@ -14,18 +14,6 @@ export default { gridViewRowDetailsWidth: 72, } }, - /*beforeCreate() { - this.$options.computed = { - ...(this.$options.computed || {}), - ...mapGetters({ - fieldOptions: - this.$options.propsData.storePrefix + 'view/grid/getAllFieldOptions', - publicGrid: 'page/view/public/getIsPublic', - activeGroupBys: - this.$options.propsData.storePrefix + 'view/grid/getActiveGroupBys', - }), - } - },*/ computed: { activeGroupByWidth() { return this.activeGroupBys.reduce( @@ -51,26 +39,15 @@ export default { }, }, methods: { - getGroupByField(groupBy) { - return this.$store.getters['field/getAll'].find( - (f) => f.id === groupBy.field - ) - }, getFieldWidth(field) { const fieldId = field?.id - const hasFieldOptions = - fieldId && - Object.prototype.hasOwnProperty.call(this.fieldOptions, fieldId) + const options = fieldId ? this.fieldOptions[fieldId] : undefined - if ( - hasFieldOptions && - this.fieldOptions[fieldId].hidden && - !field.primary - ) { + if (options?.hidden && !field.primary) { return 0 } - return hasFieldOptions ? this.fieldOptions[fieldId].width : 200 + return options?.width ?? 200 }, async moveFieldWidth(field, width) { await this.$store.dispatch( diff --git a/web-frontend/modules/database/realtime.js b/web-frontend/modules/database/realtime.js index 940d676fa2..987a31a410 100644 --- a/web-frontend/modules/database/realtime.js +++ b/web-frontend/modules/database/realtime.js @@ -332,17 +332,14 @@ export const registerRealtimeEvents = (realtime) => { const view = store.getters['view/get'](data.view_id) if (view !== undefined) { if (store.getters['view/getSelectedId'] === view.id) { - const updateViewPromise = store.dispatch('view/forceUpdate', { + const viewType = app.$registry.get('view', view.type) + await viewType.forceViewRefresh( + { store }, view, - values: data.view, - repopulate: true, - }) - const updateFieldsPromise = store.dispatch('field/forceSetFields', { - fields: data.fields, - }) - - // This makes sure both dispatches are executed in parallel. - await Promise.all([updateViewPromise, updateFieldsPromise]) + data.view, + data.fields, + 'page/' + ) app.$bus.$emit('table-refresh', { tableId: store.getters['table/getSelectedId'], diff --git a/web-frontend/modules/database/store/view.js b/web-frontend/modules/database/store/view.js index c6ddd5ca7c..35f630b8b8 100644 --- a/web-frontend/modules/database/store/view.js +++ b/web-frontend/modules/database/store/view.js @@ -1374,7 +1374,7 @@ export const actions = { field.group_bys .filter((groupBy) => groupBy.view === view.id) .forEach((groupBy) => { - dispatch('forceCreateSort', { view, values: groupBy }) + dispatch('forceCreateGroupBy', { view, values: groupBy }) }) } }, diff --git a/web-frontend/modules/database/store/view/grid.js b/web-frontend/modules/database/store/view/grid.js index bb73155a6e..6a54c0a813 100644 --- a/web-frontend/modules/database/store/view/grid.js +++ b/web-frontend/modules/database/store/view/grid.js @@ -677,9 +677,8 @@ export const mutations = { let updated = false const groupByFields = groupBys .slice(0, groupByIndex + 1) - .map((groupBy) => { - return fields.find((f) => f.id === groupBy.field) - }) + .map((groupBy) => fields.find((f) => f.id === groupBy.field)) + .filter(Boolean) const fieldName = `field_${groupBy.field}` if (!Object.prototype.hasOwnProperty.call(existingMetadata, fieldName)) { existingMetadata[`field_${groupBy.field}`] = [] @@ -1529,6 +1528,7 @@ export const actions = { fromField, undoRedoActionGroupId = null, readOnly = false, + visible = null, } ) { const { $registry, $client, $i18n, $config } = this @@ -1566,6 +1566,9 @@ export const actions = { // Update all other field order options.order = index index += 1 + } else if (visible !== null) { + // Make the moved field visible if the `visible` parameter is not null + newFieldOptions[fieldId].hidden = !visible } }) @@ -3830,11 +3833,8 @@ export const getters = { return row._.selected && row._.selectedFieldId !== -1 }) }, - getActiveGroupBys(state, getters, rootState, rootGetters) { - const fields = rootGetters['field/getAll'] - return state.activeGroupBys.filter((groupBy) => - fields.some((f) => f.id === groupBy.field) - ) + getActiveGroupBys(state) { + return state.activeGroupBys }, getGroupByMetadata(state) { return state.groupByMetadata diff --git a/web-frontend/modules/database/utils/view.js b/web-frontend/modules/database/utils/view.js index d1e1da5f60..7fa250ab12 100644 --- a/web-frontend/modules/database/utils/view.js +++ b/web-frontend/modules/database/utils/view.js @@ -80,19 +80,17 @@ export function sortFieldsByOrderAndIdFunction( */ export function filterVisibleFieldsFunction(fieldOptions) { return (field) => { - const exists = Object.prototype.hasOwnProperty.call(fieldOptions, field.id) - return !exists || !fieldOptions[field.id].hidden + const options = fieldOptions[field.id] + return options && !options.hidden } } /** - * Returns only fields that are visible (not hidden). + * Returns only fields that are hidden (not visible). */ export function filterHiddenFieldsFunction(fieldOptions) { - return (field) => { - const exists = Object.prototype.hasOwnProperty.call(fieldOptions, field.id) - return exists && fieldOptions[field.id].hidden - } + const isFieldVisible = filterVisibleFieldsFunction(fieldOptions) + return (field) => !isFieldVisible(field) } /** diff --git a/web-frontend/modules/database/viewTypes.js b/web-frontend/modules/database/viewTypes.js index fc86543eeb..28c187eeb2 100644 --- a/web-frontend/modules/database/viewTypes.js +++ b/web-frontend/modules/database/viewTypes.js @@ -264,6 +264,22 @@ export class ViewType extends Registerable { return false } + /** + * Called when the view needs to be forcefully refreshed via a realtime event. + * Handles updating the view and fields atomically. View types can override to + * perform additional synchronization before the update. + */ + forceViewRefresh({ store }, view, values, fields, storePrefix) { + return Promise.all([ + store.dispatch('view/forceUpdate', { + view, + values, + repopulate: true, + }), + store.dispatch('field/forceSetFields', { fields }), + ]) + } + /** * Event that is called when a row is created from an outside source, so for example * via a real time event by another user. It can be used to check if data in an store @@ -603,7 +619,6 @@ export class GridViewType extends ViewType { includeFieldOptions = false, sourceEvent = null ) { - await store.dispatch(storePrefix + 'view/grid/updateActiveGroupBys', []) const isPublic = store.getters[storePrefix + 'view/public/getIsPublic'] const adhocFiltering = isAdhocFiltering( this.app, @@ -626,6 +641,18 @@ export class GridViewType extends ViewType { }) } + forceViewRefresh({ store }, view, values, fields, storePrefix) { + // Sync activeGroupBys together with the view and fields update so that + // components don't try to look up fields that have been removed or haven't + // been added yet. All dispatches are synchronous commits so Vue batches the + // re-render with all three applied atomically. + store.dispatch( + storePrefix + 'view/grid/updateActiveGroupBys', + clone(values.group_bys || []) + ) + return super.forceViewRefresh({ store }, view, values, fields, storePrefix) + } + async fieldRestored( { dispatch, rootGetters }, table, @@ -641,6 +668,13 @@ export class GridViewType extends ViewType { { field, fieldType, view: selectedView }, { root: true } ) + // Sync the grid store's activeGroupBys with the view's group_bys which + // may have been updated by the field restore above. + await dispatch( + storePrefix + 'view/grid/updateActiveGroupBys', + clone(selectedView.group_bys || []), + { root: true } + ) } shouldRefreshWhenFieldCreated(registry, store, field, storePrefix) { @@ -656,7 +690,7 @@ export class GridViewType extends ViewType { } async afterFieldCreated( - { dispatch }, + { rootGetters, dispatch }, table, field, fieldType, @@ -668,6 +702,12 @@ export class GridViewType extends ViewType { { field, value }, { root: true } ) + const viewId = rootGetters[storePrefix + 'view/grid/getLastGridId'] + const view = viewId === -1 ? null : rootGetters['view/get'](viewId) + const isPublic = view?.public ?? false + const anyOtherFieldHidden = Object.values( + rootGetters[storePrefix + 'view/grid/getAllFieldOptions'] + ).some((options) => options.hidden) await dispatch( storePrefix + 'view/grid/setFieldOptionsOfField', { @@ -676,7 +716,7 @@ export class GridViewType extends ViewType { // model in the backend to stay consistent. values: { width: 200, - hidden: false, + hidden: isPublic || anyOtherFieldHidden, order: maxPossibleOrderValue, aggregation_type: '', aggregation_raw_type: '', diff --git a/web-frontend/test/unit/database/__snapshots__/publicView.spec.js.snap b/web-frontend/test/unit/database/__snapshots__/publicView.spec.js.snap index 6f67af75fb..ae72d67931 100644 --- a/web-frontend/test/unit/database/__snapshots__/publicView.spec.js.snap +++ b/web-frontend/test/unit/database/__snapshots__/publicView.spec.js.snap @@ -429,7 +429,7 @@ exports[`Public View Page Tests > Can see a publicly shared grid view 1`] = `
Can see a publicly shared grid view 1`] = ` />
-
-
-
- - -
-
- - Active - -
- - - - - - - - - -
-
-
@@ -609,7 +569,7 @@ exports[`Public View Page Tests > Can see a publicly shared grid view 1`] = ` >
@@ -625,10 +585,6 @@ exports[`Public View Page Tests > Can see a publicly shared grid view 1`] = ` class="grid-view__placeholder-column" style="left: 599px;" /> -
@@ -697,22 +653,6 @@ exports[`Public View Page Tests > Can see a publicly shared grid view 1`] = `
-
-
-
- - common.summarize -
-
-
@@ -735,11 +675,11 @@ exports[`Public View Page Tests > Can see a publicly shared grid view 1`] = ` >
diff --git a/web-frontend/test/unit/database/__snapshots__/table.spec.js.snap b/web-frontend/test/unit/database/__snapshots__/table.spec.js.snap index a2bfd76800..2d3dc2d2e7 100644 --- a/web-frontend/test/unit/database/__snapshots__/table.spec.js.snap +++ b/web-frontend/test/unit/database/__snapshots__/table.spec.js.snap @@ -123,7 +123,7 @@ exports[`Table Component Tests > Adding a row to a table increases the row count
-
+
@@ -156,26 +156,15 @@ exports[`Table Component Tests > Adding a row to a table increases the row count
-
-
-
- -
-
Active
- -
-
-
-
+
-
@@ -193,8 +182,8 @@ exports[`Table Component Tests > Adding a row to a table increases the row count
-
-
+ @@ -217,11 +206,6 @@ exports[`Table Component Tests > Adding a row to a table increases the row count
common.summarize
-
-
-
common.summarize
-
-
@@ -230,8 +214,8 @@ exports[`Table Component Tests > Adding a row to a table increases the row count
@@ -364,7 +348,7 @@ exports[`Table Component Tests > Adding a row to a table increases the row count
-
+
@@ -397,26 +381,15 @@ exports[`Table Component Tests > Adding a row to a table increases the row count
-
-
-
- -
-
Active
- -
-
-
-
+
-
@@ -434,8 +407,8 @@ exports[`Table Component Tests > Adding a row to a table increases the row count
-
-
+ @@ -458,11 +431,6 @@ exports[`Table Component Tests > Adding a row to a table increases the row count
common.summarize
-
-
-
common.summarize
-
-
@@ -471,8 +439,8 @@ exports[`Table Component Tests > Adding a row to a table increases the row count
diff --git a/web-frontend/test/unit/database/components/view/gallery/__snapshots__/galleryViewDecoration.spec.js.snap b/web-frontend/test/unit/database/components/view/gallery/__snapshots__/galleryViewDecoration.spec.js.snap index 19d891e1fb..ff5c5f78ef 100644 --- a/web-frontend/test/unit/database/components/view/gallery/__snapshots__/galleryViewDecoration.spec.js.snap +++ b/web-frontend/test/unit/database/components/view/gallery/__snapshots__/galleryViewDecoration.spec.js.snap @@ -16,7 +16,7 @@ exports[`GalleryView component with decoration > Default component with first_ce > -
-
- Address -
-
-
-
-
@@ -128,7 +109,7 @@ exports[`GalleryView component with decoration > Default component with row wrap > -
-
- Address -
-
-
-
-
@@ -242,7 +204,7 @@ exports[`GalleryView component with decoration > Default component with unavaila > -
-
- Address -
-
-
-
-
diff --git a/web-frontend/test/unit/database/components/view/grid/__snapshots__/gridViewDecoration.spec.js.snap b/web-frontend/test/unit/database/components/view/grid/__snapshots__/gridViewDecoration.spec.js.snap index 2a93867753..58091722a5 100644 --- a/web-frontend/test/unit/database/components/view/grid/__snapshots__/gridViewDecoration.spec.js.snap +++ b/web-frontend/test/unit/database/components/view/grid/__snapshots__/gridViewDecoration.spec.js.snap @@ -177,7 +177,7 @@ exports[`GridView component with decoration > Default component with first_cell
Default component with first_cell />
-
-
-
- - -
-
- - Address - -
- - - - - - - - - - -
-
-
Default component with first_cell >
@@ -356,10 +311,6 @@ exports[`GridView component with decoration > Default component with first_cell class="grid-view__placeholder-column" style="left: 399px;" /> -
@@ -421,11 +372,11 @@ exports[`GridView component with decoration > Default component with first_cell
-
-
-
- - common.summarize -
-
-
@@ -511,11 +446,11 @@ exports[`GridView component with decoration > Default component with first_cell >
@@ -700,7 +635,7 @@ exports[`GridView component with decoration > Default component with row wrapper
Default component with row wrapper />
-
-
Default component with row wrapper >
@@ -879,10 +769,6 @@ exports[`GridView component with decoration > Default component with row wrapper class="grid-view__placeholder-column" style="left: 399px;" /> -
@@ -952,11 +838,11 @@ exports[`GridView component with decoration > Default component with row wrapper
-
-
-
- - common.summarize -
-
-
@@ -1042,11 +912,11 @@ exports[`GridView component with decoration > Default component with row wrapper >
@@ -1223,7 +1093,7 @@ exports[`GridView component with decoration > Default component with unavailable
Default component with unavailable />
-
-
Default component with unavailable >
@@ -1402,10 +1227,6 @@ exports[`GridView component with decoration > Default component with unavailable class="grid-view__placeholder-column" style="left: 399px;" /> -
@@ -1467,11 +1288,11 @@ exports[`GridView component with decoration > Default component with unavailable
-
-
-
- - common.summarize -
-
-
@@ -1557,11 +1362,11 @@ exports[`GridView component with decoration > Default component with unavailable >