From 2ac563e4cb780542036c151d35152efa4c912960 Mon Sep 17 00:00:00 2001 From: Kurund Jalmi Date: Fri, 20 Aug 2021 15:04:15 +0100 Subject: [PATCH] add grid layout support for searchkit --- css/civicrm.css | 24 ++++++++++ .../searchAdminDisplayGrid.component.js | 32 +++++++++++++ .../displays/searchAdminDisplayGrid.html | 46 +++++++++++++++++++ .../ang/crmSearchDisplayGrid.ang.php | 17 +++++++ .../ang/crmSearchDisplayGrid.module.js | 7 +++ .../crmSearchDisplayGrid.component.js | 29 ++++++++++++ .../crmSearchDisplayGrid.html | 8 ++++ .../crmSearchDisplayGridItems.html | 8 ++++ .../managed/SearchDisplayType.mgd.php | 11 +++++ 9 files changed, 182 insertions(+) create mode 100644 ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayGrid.component.js create mode 100644 ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayGrid.html create mode 100644 ext/search_kit/ang/crmSearchDisplayGrid.ang.php create mode 100644 ext/search_kit/ang/crmSearchDisplayGrid.module.js create mode 100644 ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGrid.component.js create mode 100644 ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGrid.html create mode 100644 ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGridItems.html diff --git a/css/civicrm.css b/css/civicrm.css index 5aa2cf87fb..ff7f073938 100644 --- a/css/civicrm.css +++ b/css/civicrm.css @@ -3899,3 +3899,27 @@ span.crm-status-icon { border-radius: 3px; border: 1px solid grey; } + +/* search kit grid layout styling */ +.crm-search-display-grid-container { + display: grid; + grid-gap: 1em; + align-items: center; + justify-items: center; +} + +.crm-search-display-grid-layout-2 { + grid-template-columns: repeat(2, 1fr); +} + +.crm-search-display-grid-layout-3 { + grid-template-columns: repeat(3, 1fr); +} + +.crm-search-display-grid-layout-4 { + grid-template-columns: repeat(4, 1fr); +} + +.crm-search-display-grid-layout-5 { + grid-template-columns: repeat(5, 1fr); +} diff --git a/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayGrid.component.js b/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayGrid.component.js new file mode 100644 index 0000000000..3a55a7aab1 --- /dev/null +++ b/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayGrid.component.js @@ -0,0 +1,32 @@ +(function(angular, $, _) { + "use strict"; + + angular.module('crmSearchAdmin').component('searchAdminDisplayGrid', { + bindings: { + display: '<', + apiEntity: '<', + apiParams: '<' + }, + require: { + parent: '^crmSearchAdminDisplay' + }, + templateUrl: '~/crmSearchAdmin/displays/searchAdminDisplayGrid.html', + controller: function($scope) { + var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'), + ctrl = this; + + this.$onInit = function () { + if (!ctrl.display.settings) { + ctrl.display.settings = { + colno: '3', + limit: CRM.crmSearchAdmin.defaultPagerSize, + pager: {} + }; + } + ctrl.parent.initColumns({}); + }; + + } + }); + +})(angular, CRM.$, CRM._); diff --git a/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayGrid.html b/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayGrid.html new file mode 100644 index 0000000000..2da44b5580 --- /dev/null +++ b/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayGrid.html @@ -0,0 +1,46 @@ +
+
+
+ + +
+
+ +
+
+ + {{:: ts('Fields') }} +
+
+
+
+ {{ $ctrl.parent.getColLabel(col) }} +
+ + +
+
+ + + +
+
+ +
+ +
+
+
+
+
+
diff --git a/ext/search_kit/ang/crmSearchDisplayGrid.ang.php b/ext/search_kit/ang/crmSearchDisplayGrid.ang.php new file mode 100644 index 0000000000..727e6d5f4f --- /dev/null +++ b/ext/search_kit/ang/crmSearchDisplayGrid.ang.php @@ -0,0 +1,17 @@ + [ + 'ang/crmSearchDisplayGrid.module.js', + 'ang/crmSearchDisplayGrid/*.js', + ], + 'partials' => [ + 'ang/crmSearchDisplayGrid', + ], + 'basePages' => ['civicrm/search', 'civicrm/admin/search'], + 'requires' => ['crmSearchDisplay', 'crmUi', 'ui.bootstrap'], + 'bundles' => ['bootstrap3'], + 'exports' => [ + 'crm-search-display-grid' => 'E', + ], +]; diff --git a/ext/search_kit/ang/crmSearchDisplayGrid.module.js b/ext/search_kit/ang/crmSearchDisplayGrid.module.js new file mode 100644 index 0000000000..ae9b5aae95 --- /dev/null +++ b/ext/search_kit/ang/crmSearchDisplayGrid.module.js @@ -0,0 +1,7 @@ +(function(angular, $, _) { + "use strict"; + + // Declare module + angular.module('crmSearchDisplayGrid', CRM.angRequires('crmSearchDisplayGrid')); + +})(angular, CRM.$, CRM._); diff --git a/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGrid.component.js b/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGrid.component.js new file mode 100644 index 0000000000..d66e594382 --- /dev/null +++ b/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGrid.component.js @@ -0,0 +1,29 @@ +(function(angular, $, _) { + "use strict"; + + angular.module('crmSearchDisplayGrid').component('crmSearchDisplayGrid', { + bindings: { + apiEntity: '@', + search: '<', + display: '<', + apiParams: '<', + settings: '<', + filters: '<' + }, + require: { + afFieldset: '?^^afFieldset' + }, + templateUrl: '~/crmSearchDisplayGrid/crmSearchDisplayGrid.html', + controller: function($scope, $element, searchDisplayBaseTrait) { + var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'), + // Mix in properties of searchDisplayBaseTrait + ctrl = angular.extend(this, searchDisplayBaseTrait); + + this.$onInit = function() { + this.initializeDisplay($scope, $element); + }; + + } + }); + +})(angular, CRM.$, CRM._); diff --git a/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGrid.html b/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGrid.html new file mode 100644 index 0000000000..5d8c3b7196 --- /dev/null +++ b/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGrid.html @@ -0,0 +1,8 @@ +
+
+
+
+
diff --git a/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGridItems.html b/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGridItems.html new file mode 100644 index 0000000000..bb908bfbb6 --- /dev/null +++ b/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGridItems.html @@ -0,0 +1,8 @@ +
+
+ + +
+
diff --git a/ext/search_kit/managed/SearchDisplayType.mgd.php b/ext/search_kit/managed/SearchDisplayType.mgd.php index ed54c8fe83..694a37e753 100644 --- a/ext/search_kit/managed/SearchDisplayType.mgd.php +++ b/ext/search_kit/managed/SearchDisplayType.mgd.php @@ -32,4 +32,15 @@ return [ 'icon' => 'fa-list', ], ], + [ + 'name' => 'SearchDisplayType:grid', + 'entity' => 'OptionValue', + 'params' => [ + 'option_group_id' => 'search_display_type', + 'value' => 'grid', + 'name' => 'crm-search-display-grid', + 'label' => 'Grid', + 'icon' => 'fa-th', + ], + ], ]; -- 2.25.1