rusackas commented on code in PR #37141:
URL: https://github.com/apache/superset/pull/37141#discussion_r2824927392


##########
superset-frontend/src/components/ListView/ListView.tsx:
##########
@@ -516,6 +582,32 @@ export function ListView<T extends object = any>({
           )}
         </div>
       </div>
+
+      {/* Mobile filter drawer */}
+      {filterable && setMobileFiltersOpen && (
+        <Drawer
+          title={mobileFiltersDrawerTitle || t('Search')}
+          placement="left"
+          onClose={() => setMobileFiltersOpen(false)}
+          open={mobileFiltersOpen}
+          width={300}
+        >
+          <MobileFilterDrawerContent>
+            <FilterControls
+              filters={filters}
+              internalFilters={internalFilters}
+              updateFilterValue={applyFilterValue}
+            />

Review Comment:
   Acknowledged - the filter ref is used for the "Clear All" functionality in 
the mobile filter drawer. Will review if this needs to be passed through more 
explicitly or if a different pattern (like a context or callback) would be 
cleaner in a follow-up PR.



##########
superset-frontend/src/components/ListView/ListView.tsx:
##########
@@ -516,6 +582,32 @@ export function ListView<T extends object = any>({
           )}
         </div>
       </div>
+
+      {/* Mobile filter drawer */}
+      {filterable && setMobileFiltersOpen && (
+        <Drawer
+          title={mobileFiltersDrawerTitle || t('Search')}
+          placement="left"
+          onClose={() => setMobileFiltersOpen(false)}
+          open={mobileFiltersOpen}
+          width={300}
+        >
+          <MobileFilterDrawerContent>
+            <FilterControls
+              filters={filters}
+              internalFilters={internalFilters}
+              updateFilterValue={applyFilterValue}
+            />
+            {cardSortSelectOptions && (

Review Comment:
   Acknowledged - the sort control visibility uses `forceViewMode` which is 
derived from the mobile breakpoint state. The check ensures sort controls are 
only shown in the appropriate view mode. Will review for consistency in the 
sorting behavior between card/table views.



##########
superset-frontend/src/dashboard/components/Header/useHeaderActionsDropdownMenu.tsx:
##########
@@ -187,6 +201,46 @@ export const useHeaderActionsMenu = ({
 
     const menuItems: MenuItem[] = [];
 
+    // Mobile-only: show dashboard info items in menu
+    if (isMobile && !editMode) {
+      // Favorite toggle
+      if (saveFaveStar) {
+        menuItems.push({
+          key: 'toggle-favorite',
+          label: isStarred ? t('Remove from favorites') : t('Add to 
favorites'),
+        });
+      }
+
+      // Published status
+      menuItems.push({
+        key: 'status-info',
+        label: isPublished ? t('Status: Published') : t('Status: Draft'),
+        disabled: true,
+      });
+
+      // Owner info
+      const ownerNames =
+        dashboardInfo?.owners?.length > 0
+          ? dashboardInfo.owners.map(getOwnerName).join(', ')
+          : t('None');
+      menuItems.push({
+        key: 'owner-info',
+        label: `${t('Owner')}: ${ownerNames}`,
+        disabled: true,
+      });
+
+      // Last modified
+      const modifiedBy =
+        getOwnerName(dashboardInfo?.changed_by) || t('Not available');
+      menuItems.push({
+        key: 'modified-info',
+        label: `${t('Modified')} ${dashboardInfo?.changed_on_delta_humanized 
|| ''} ${t('by')} ${modifiedBy}`,

Review Comment:
   Acknowledged - the i18n string concatenation issue is a good catch. Using 
interpolation (`t('Modified {date} by {user}', {date: ..., user: ...})`) would 
be more translation-friendly. Will address in a follow-up to improve i18n 
support.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to