Skip to content

Use Selectable Location Fields

As a Host, I want location-related fields to be selectable dropdowns instead of text inputs, So that data entry is faster, more accurate, and consistent across the app.

  • Given I am adding or editing a product, tool, glassware, or equipment item
  • When I set a storage location
  • Then the location field is a dropdown/picker with predefined options
  • And I cannot type free-form text for locations
  • And location options are:
    • Consistent across all inventory screens
    • Based on the current venue’s bars and storage areas (see use_venue_locations_for_inventory.md)
    • Or generic fallback options if venue locations aren’t available
  • And I can quickly select from available locations
  • And the selected location is displayed consistently across the app

FULLY IMPLEMENTED (January 2026)

All Screens Using Pickers:

  • add-product.tsx - Storage Location uses Picker component
  • add-tool.tsx - Storage Location uses Picker component
  • add-glassware.tsx - Storage Location uses Picker component
  • add-equipment.tsx - Storage Location uses Picker component
  • edit-item.tsx - Storage Location uses Picker component (updated January 2026)

All Files Now Using Pickers:

  • shaker/app/(tabs)/inventory/add-product.tsx - Uses Picker with storageLocationOptions
  • shaker/app/(tabs)/inventory/tools/add-tool.tsx - Uses Picker with toolStorageOptions
  • shaker/app/(tabs)/inventory/glassware/add-glassware.tsx - Uses Picker with glasswareStorageOptions
  • shaker/app/(tabs)/inventory/equipment/add-equipment.tsx - Uses Picker with equipment storage options
  • shaker/app/(tabs)/inventory/edit-item.tsx - Uses Picker with storageLocationOptions (updated January 2026)

Changes Made:

  1. Updated Edit Item Screen (January 2026):

    • ✅ Replaced TextInput for storageLocation with Picker component
    • ✅ Imported storageLocationOptions from @/lib/inventory/add-product/formFields
    • ✅ Uses the same location options as the add-product screen for consistency
  2. Consistency Achieved:

    • ✅ All location fields use the same Picker component
    • ✅ Location options come from consistent sources (currently generic hardcoded options)
    • ✅ Display format is consistent (labels with spaces, values with underscores)
  3. Location Options Source (Current):

    • Currently using generic hardcoded options for all inventory types
    • Future: Venue-based locations (bars and storage areas) - see use_venue_locations_for_inventory.md

Implementation Example:

Updated implementation in edit-item.tsx:

<Picker
label="Storage Location"
placeholder="Select storage location"
options={storageLocationOptions}
value={formData.storageLocation}
onValueChange={(value) => handleFieldChange("storageLocation", value)}
/>

Medium - Improves data quality and user experience

  • Product, Tool, Glassware, Equipment, StorageLocation, Venue, Bar, StorageArea
  • Use Venue Locations for Inventory (use_venue_locations_for_inventory.md) - Location options should come from venue structure (future enhancement)
  • Add Product/Tool/Glassware/Equipment stories - Location selection is now consistent ✅
  • Edit Item functionality - Now uses picker instead of text input ✅

Speed:

  • Faster selection from dropdown vs. typing
  • No need to remember exact location names
  • Consistent naming prevents typos

Accuracy:

  • Prevents typos and inconsistent naming
  • Ensures locations match venue structure
  • Enables filtering by location reliably

Consistency:

  • All location fields behave the same way
  • Location names are standardized
  • Easier to maintain and update
  • Dynamic location options based on current venue (see use_venue_locations_for_inventory.md)
  • Search/filter within location picker for venues with many locations
  • Recently used locations shown first
  • Custom location option with validation