You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/04/15 08:59:21 UTC

[isis] branch master updated: Changing prompt style for SecMan permissions to modal, adapting ApplicationUser layout, adding missing fieldSet id in CommandJdo layout

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new b463781  Changing prompt style for SecMan permissions to modal, adapting ApplicationUser layout, adding missing fieldSet id in CommandJdo layout
b463781 is described below

commit b463781b129db7f02e73cb19d14dba6ba274a5a9
Author: mwhesse <mw...@gmail.com>
AuthorDate: Thu Apr 15 14:36:35 2021 +0700

    Changing prompt style for SecMan permissions to modal, adapting ApplicationUser layout, adding missing fieldSet id in CommandJdo layout
---
 .../impl/jdo/CommandJdo.layout.fallback.xml        |  2 +-
 .../dom/role/ApplicationRole_addPermission.java    |  6 +-
 .../role/ApplicationRole_removePermissions.java    |  6 +-
 .../user/ApplicationUser_filterPermissions.java    |  3 +-
 .../dom/user/ApplicationUser.layout.fallback.xml   | 93 ++++++++++++++++++++++
 .../secman/jdo/dom/user/ApplicationUser.layout.xml | 72 -----------------
 .../dom/user/ApplicationUser.layout.fallback.xml   | 93 ++++++++++++++++++++++
 .../secman/jpa/dom/user/ApplicationUser.layout.xml | 72 -----------------
 8 files changed, 199 insertions(+), 148 deletions(-)

diff --git a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/jdo/CommandJdo.layout.fallback.xml b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/jdo/CommandJdo.layout.fallback.xml
index 8f7e26a..be6c3ef 100644
--- a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/jdo/CommandJdo.layout.fallback.xml
+++ b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/jdo/CommandJdo.layout.fallback.xml
@@ -45,7 +45,7 @@
                     </cpt:fieldSet>
                 </bs3:col>
                 <bs3:col span="0">
-                    <cpt:fieldSet name="Hidden">
+                    <cpt:fieldSet name="Hidden" id="hidden">
                         <cpt:property id="preValue" hidden="EVERYWHERE"/>
                         <cpt:property id="postValue" hidden="EVERYWHERE"/>
                     </cpt:fieldSet>
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addPermission.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addPermission.java
index 85e1f2b..9ab3053 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addPermission.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addPermission.java
@@ -27,6 +27,7 @@ import org.apache.isis.applib.annotation.MinLength;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.services.appfeat.ApplicationFeature;
 import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
 import org.apache.isis.extensions.secman.api.permission.ApplicationPermission;
@@ -44,7 +45,10 @@ import lombok.experimental.Accessors;
 @Action(
         domainEvent = AddPermissionDomainEvent.class, 
         associateWith = "permissions")
-@ActionLayout(named="Add", sequence = "0")
+@ActionLayout(
+		named="Add",
+		sequence = "0",
+		promptStyle = PromptStyle.DIALOG_MODAL)
 @RequiredArgsConstructor
 public class ApplicationRole_addPermission {
     
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_removePermissions.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_removePermissions.java
index 6b3295c..921641d 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_removePermissions.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_removePermissions.java
@@ -26,6 +26,7 @@ import javax.inject.Inject;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.MemberSupport;
+import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.services.message.MessageService;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.commons.internal.base._NullSafe;
@@ -40,7 +41,10 @@ import lombok.RequiredArgsConstructor;
 @Action(
         domainEvent = RemovePermissionDomainEvent.class, 
         associateWith = "permissions")
-@ActionLayout(named="Remove", sequence = "10")
+@ActionLayout(
+		named="Remove",
+		sequence = "10",
+		promptStyle = PromptStyle.DIALOG_MODAL)
 @RequiredArgsConstructor
 public class ApplicationRole_removePermissions {
 
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUser_filterPermissions.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUser_filterPermissions.java
index bdab70e..37731ec 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUser_filterPermissions.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUser_filterPermissions.java
@@ -32,6 +32,7 @@ import org.apache.isis.applib.annotation.MinLength;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.appfeat.ApplicationFeature;
 import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
@@ -47,7 +48,7 @@ import lombok.val;
 @Action(
         semantics = SemanticsOf.SAFE,
         associateWith = "permissions")
-@ActionLayout(sequence = "1")
+@ActionLayout(sequence = "1", promptStyle = PromptStyle.DIALOG_MODAL)
 @RequiredArgsConstructor
 public class ApplicationUser_filterPermissions {
 
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.layout.fallback.xml b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.layout.fallback.xml
new file mode 100644
index 0000000..4b43b4c
--- /dev/null
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.layout.fallback.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<bs3:grid xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/links http://isis.apache.org/applib/layout/links/links.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd" xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3" xmlns:cpt="http://isis.apache.org/applib/layout/component" xmlns:lnk="h [...]
+    <bs3:row>
+        <bs3:col span="12" unreferencedActions="true">
+            <cpt:domainObject/>
+            <cpt:action id="delete"/>
+            <cpt:action id="open"/>
+        </bs3:col>
+    </bs3:row>
+    <bs3:row>
+        <bs3:col span="4">
+            <cpt:fieldSet name="Id" id="id" unreferencedProperties="true">
+                <cpt:property id="name"/>
+                <cpt:property id="username"/>
+                <cpt:property id="encryptedPassword"/>
+            </cpt:fieldSet>
+            <cpt:fieldSet name="Status" id="status">
+                <cpt:property id="accountType"/>
+                <cpt:property id="hasPassword"/>
+                <cpt:property id="status"/>
+                <cpt:property id="atPath"/>
+            </cpt:fieldSet>
+            <cpt:fieldSet name="Metadata" id="metadata">
+                <cpt:property id="datanucleusIdLong"/>
+                <cpt:property id="datanucleusVersionLong"/>
+                <cpt:property id="datanucleusVersionTimestamp"/>
+            </cpt:fieldSet>
+        </bs3:col>
+        <bs3:col span="8">
+        	<bs3:row>
+        		<bs3:col span="12">
+        			<bs3:tabGroup>
+        				<bs3:tab name="Name and Contact Details">
+        					<bs3:row>
+        						<bs3:col span="6">
+						            <cpt:fieldSet name="Contact Details" id="contactDetails">
+						                <cpt:property id="emailAddress"/>
+						                <cpt:property id="phoneNumber"/>
+						                <cpt:property id="faxNumber"/>
+						            </cpt:fieldSet>
+        						</bs3:col>
+        						<bs3:col span="6">
+						            <cpt:fieldSet name="Name" id="name">
+						                <cpt:property id="familyName"/>
+						                <cpt:property id="givenName"/>
+						                <cpt:property id="knownAs"/>
+						            </cpt:fieldSet>						            
+        						</bs3:col>
+        					</bs3:row>
+        				</bs3:tab>
+		        		<bs3:tab name="Roles">
+		        			<bs3:row>
+		        				<bs3:col span="12">
+						            <cpt:collection id="roles"/>
+		        				</bs3:col>
+		        			</bs3:row>
+		        		</bs3:tab>
+		        		<bs3:tab name="Permissions">
+		        			<bs3:row>
+		        				<bs3:col span="12">
+		        					<cpt:collection id="permissions"/>
+		        				</bs3:col>
+		        			</bs3:row>
+		        		</bs3:tab>
+		        		<bs3:tab name="Other">
+		        			<bs3:row>
+		        				<bs3:col span="12" unreferencedCollections="true" />
+		        			</bs3:row>
+		        		</bs3:tab>
+        			</bs3:tabGroup>
+        		</bs3:col>
+        	</bs3:row>
+        </bs3:col>
+    </bs3:row>
+</bs3:grid>
\ No newline at end of file
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.layout.xml b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.layout.xml
deleted file mode 100644
index da3798b..0000000
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.layout.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<bs3:grid
-        xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd   http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
-        xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3"
-        xmlns:cpt="http://isis.apache.org/applib/layout/component"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-    <bs3:row>
-        <bs3:col span="12" unreferencedActions="true">
-            <cpt:domainObject/>
-            <cpt:action id="delete"/>
-            <cpt:action id="open"/>
-        </bs3:col>
-    </bs3:row>
-    <bs3:row>
-        <bs3:col span="4">
-            <cpt:fieldSet name="Id" id="id" unreferencedProperties="true">
-                <cpt:property id="name"/>
-                <cpt:property id="username"/>
-                <cpt:property id="encryptedPassword"/>
-            </cpt:fieldSet>
-            <cpt:fieldSet name="Name" id="name">
-                <cpt:property id="familyName"/>
-                <cpt:property id="givenName"/>
-                <cpt:property id="knownAs"/>
-            </cpt:fieldSet>
-            <cpt:fieldSet name="Metadata" id="metadata">
-                <cpt:property id="datanucleusIdLong"/>
-                <cpt:property id="datanucleusVersionLong"/>
-                <cpt:property id="datanucleusVersionTimestamp"/>
-            </cpt:fieldSet>
-        </bs3:col>
-        <bs3:col span="4">
-            <cpt:fieldSet name="Contact Details" id="contactDetails">
-                <cpt:property id="emailAddress"/>
-                <cpt:property id="phoneNumber"/>
-                <cpt:property id="faxNumber"/>
-            </cpt:fieldSet>
-        </bs3:col>
-        <bs3:col span="4">
-            <cpt:fieldSet name="Status" id="status">
-                <cpt:property id="accountType"/>
-                <cpt:property id="hasPassword"/>
-                <cpt:property id="status"/>
-            </cpt:fieldSet>
-            <cpt:fieldSet name="AtPath" id="atPath">
-                <cpt:property id="atPath"/>
-            </cpt:fieldSet>
-        </bs3:col>
-        <bs3:col span="12" unreferencedCollections="true">
-            <cpt:collection id="roles"/>
-            <cpt:collection id="permissions"/>
-        </bs3:col>
-    </bs3:row>
-</bs3:grid>
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUser.layout.fallback.xml b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUser.layout.fallback.xml
new file mode 100644
index 0000000..4b43b4c
--- /dev/null
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUser.layout.fallback.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<bs3:grid xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/links http://isis.apache.org/applib/layout/links/links.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd" xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3" xmlns:cpt="http://isis.apache.org/applib/layout/component" xmlns:lnk="h [...]
+    <bs3:row>
+        <bs3:col span="12" unreferencedActions="true">
+            <cpt:domainObject/>
+            <cpt:action id="delete"/>
+            <cpt:action id="open"/>
+        </bs3:col>
+    </bs3:row>
+    <bs3:row>
+        <bs3:col span="4">
+            <cpt:fieldSet name="Id" id="id" unreferencedProperties="true">
+                <cpt:property id="name"/>
+                <cpt:property id="username"/>
+                <cpt:property id="encryptedPassword"/>
+            </cpt:fieldSet>
+            <cpt:fieldSet name="Status" id="status">
+                <cpt:property id="accountType"/>
+                <cpt:property id="hasPassword"/>
+                <cpt:property id="status"/>
+                <cpt:property id="atPath"/>
+            </cpt:fieldSet>
+            <cpt:fieldSet name="Metadata" id="metadata">
+                <cpt:property id="datanucleusIdLong"/>
+                <cpt:property id="datanucleusVersionLong"/>
+                <cpt:property id="datanucleusVersionTimestamp"/>
+            </cpt:fieldSet>
+        </bs3:col>
+        <bs3:col span="8">
+        	<bs3:row>
+        		<bs3:col span="12">
+        			<bs3:tabGroup>
+        				<bs3:tab name="Name and Contact Details">
+        					<bs3:row>
+        						<bs3:col span="6">
+						            <cpt:fieldSet name="Contact Details" id="contactDetails">
+						                <cpt:property id="emailAddress"/>
+						                <cpt:property id="phoneNumber"/>
+						                <cpt:property id="faxNumber"/>
+						            </cpt:fieldSet>
+        						</bs3:col>
+        						<bs3:col span="6">
+						            <cpt:fieldSet name="Name" id="name">
+						                <cpt:property id="familyName"/>
+						                <cpt:property id="givenName"/>
+						                <cpt:property id="knownAs"/>
+						            </cpt:fieldSet>						            
+        						</bs3:col>
+        					</bs3:row>
+        				</bs3:tab>
+		        		<bs3:tab name="Roles">
+		        			<bs3:row>
+		        				<bs3:col span="12">
+						            <cpt:collection id="roles"/>
+		        				</bs3:col>
+		        			</bs3:row>
+		        		</bs3:tab>
+		        		<bs3:tab name="Permissions">
+		        			<bs3:row>
+		        				<bs3:col span="12">
+		        					<cpt:collection id="permissions"/>
+		        				</bs3:col>
+		        			</bs3:row>
+		        		</bs3:tab>
+		        		<bs3:tab name="Other">
+		        			<bs3:row>
+		        				<bs3:col span="12" unreferencedCollections="true" />
+		        			</bs3:row>
+		        		</bs3:tab>
+        			</bs3:tabGroup>
+        		</bs3:col>
+        	</bs3:row>
+        </bs3:col>
+    </bs3:row>
+</bs3:grid>
\ No newline at end of file
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUser.layout.xml b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUser.layout.xml
deleted file mode 100644
index da3798b..0000000
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUser.layout.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<bs3:grid
-        xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd   http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
-        xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3"
-        xmlns:cpt="http://isis.apache.org/applib/layout/component"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-    <bs3:row>
-        <bs3:col span="12" unreferencedActions="true">
-            <cpt:domainObject/>
-            <cpt:action id="delete"/>
-            <cpt:action id="open"/>
-        </bs3:col>
-    </bs3:row>
-    <bs3:row>
-        <bs3:col span="4">
-            <cpt:fieldSet name="Id" id="id" unreferencedProperties="true">
-                <cpt:property id="name"/>
-                <cpt:property id="username"/>
-                <cpt:property id="encryptedPassword"/>
-            </cpt:fieldSet>
-            <cpt:fieldSet name="Name" id="name">
-                <cpt:property id="familyName"/>
-                <cpt:property id="givenName"/>
-                <cpt:property id="knownAs"/>
-            </cpt:fieldSet>
-            <cpt:fieldSet name="Metadata" id="metadata">
-                <cpt:property id="datanucleusIdLong"/>
-                <cpt:property id="datanucleusVersionLong"/>
-                <cpt:property id="datanucleusVersionTimestamp"/>
-            </cpt:fieldSet>
-        </bs3:col>
-        <bs3:col span="4">
-            <cpt:fieldSet name="Contact Details" id="contactDetails">
-                <cpt:property id="emailAddress"/>
-                <cpt:property id="phoneNumber"/>
-                <cpt:property id="faxNumber"/>
-            </cpt:fieldSet>
-        </bs3:col>
-        <bs3:col span="4">
-            <cpt:fieldSet name="Status" id="status">
-                <cpt:property id="accountType"/>
-                <cpt:property id="hasPassword"/>
-                <cpt:property id="status"/>
-            </cpt:fieldSet>
-            <cpt:fieldSet name="AtPath" id="atPath">
-                <cpt:property id="atPath"/>
-            </cpt:fieldSet>
-        </bs3:col>
-        <bs3:col span="12" unreferencedCollections="true">
-            <cpt:collection id="roles"/>
-            <cpt:collection id="permissions"/>
-        </bs3:col>
-    </bs3:row>
-</bs3:grid>