Merge branch 'dev': v0.5.2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
commit
b6492ae84a
3 files changed
+16
-15
No files matched your search
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "mindsift-frontend",
|
"name": "mindsift-frontend",
|
||||||
"version": "0.5.1",
|
"version": "0.5.2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "mindsift-frontend",
|
"name": "mindsift-frontend",
|
||||||
"version": "0.5.1",
|
"version": "0.5.2",
|
||||||
"license": "Unlicense",
|
"license": "Unlicense",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/prismjs": "^1.26.6",
|
"@types/prismjs": "^1.26.6",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "mindsift-frontend",
|
"name": "mindsift-frontend",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.5.1",
|
"version": "0.5.2",
|
||||||
"license": "Unlicense",
|
"license": "Unlicense",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -766,13 +766,16 @@ export const SharedListsView: React.FC<SharedListsViewProps> = ({ onRefreshGloba
|
|||||||
return result;
|
return result;
|
||||||
}, [openItems]);
|
}, [openItems]);
|
||||||
|
|
||||||
|
const focusNewItemInput = () => {
|
||||||
|
inputRef.current?.focus({ preventScroll: true });
|
||||||
|
inputRef.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||||
|
};
|
||||||
|
|
||||||
// Register context-sensitive mobile menu groups behind the MindSift logo
|
// Register context-sensitive mobile menu groups behind the MindSift logo
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setPrimaryAction(() => {
|
setPrimaryAction(() => {
|
||||||
setTimeout(() => {
|
// Focus right inside the tap: iOS only opens the keyboard for focus() during the user gesture
|
||||||
inputRef.current?.focus();
|
focusNewItemInput();
|
||||||
inputRef.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
|
||||||
}, 60);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
setGroups([
|
setGroups([
|
||||||
@@ -786,10 +789,7 @@ export const SharedListsView: React.FC<SharedListsViewProps> = ({ onRefreshGloba
|
|||||||
icon: <Plus className="w-4 h-4 text-accent" />,
|
icon: <Plus className="w-4 h-4 text-accent" />,
|
||||||
variant: 'accent',
|
variant: 'accent',
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
setTimeout(() => {
|
focusNewItemInput();
|
||||||
inputRef.current?.focus();
|
|
||||||
inputRef.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
|
||||||
}, 60);
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1081,7 +1081,8 @@ export const SharedListsView: React.FC<SharedListsViewProps> = ({ onRefreshGloba
|
|||||||
setTimeout(() => setShowSuggestions(false), 200);
|
setTimeout(() => setShowSuggestions(false), 200);
|
||||||
}}
|
}}
|
||||||
placeholder={`Eintrag zu "${activeList.title}" hinzufügen (z. B. Hafermilch #Kühlregal)…`}
|
placeholder={`Eintrag zu "${activeList.title}" hinzufügen (z. B. Hafermilch #Kühlregal)…`}
|
||||||
className="flex-1 bg-transparent py-1.5 sm:py-1 text-sm text-main placeholder-faint focus:outline-none"
|
// 16px on phones: iOS zooms into smaller fields and the layout jumps under the keyboard
|
||||||
|
className="flex-1 bg-transparent py-1.5 sm:py-1 text-base sm:text-sm text-main placeholder-faint focus:outline-none"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{/* Hashtag Autocomplete Suggestions Dropdown */}
|
{/* Hashtag Autocomplete Suggestions Dropdown */}
|
||||||
@@ -1125,7 +1126,7 @@ export const SharedListsView: React.FC<SharedListsViewProps> = ({ onRefreshGloba
|
|||||||
value={newItemQty}
|
value={newItemQty}
|
||||||
onChange={(e) => setNewItemQty(e.target.value.replace(/[^0-9.,xX]/g, ''))}
|
onChange={(e) => setNewItemQty(e.target.value.replace(/[^0-9.,xX]/g, ''))}
|
||||||
placeholder="Menge (z.B. 2)"
|
placeholder="Menge (z.B. 2)"
|
||||||
className="flex-1 sm:flex-none sm:w-28 h-9 sm:h-7 px-2.5 sm:px-2 input-field text-xs"
|
className="flex-1 sm:flex-none sm:w-28 h-11 sm:h-7 px-2.5 sm:px-2 input-field text-base sm:text-xs"
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
@@ -1252,7 +1253,7 @@ export const SharedListsView: React.FC<SharedListsViewProps> = ({ onRefreshGloba
|
|||||||
onBlur={async () => {
|
onBlur={async () => {
|
||||||
await handleSaveQuantity(item.id, editingQtyValue);
|
await handleSaveQuantity(item.id, editingQtyValue);
|
||||||
}}
|
}}
|
||||||
className="w-16 h-6 px-1.5 text-xs input-field font-semibold text-accent text-center"
|
className="w-16 h-8 sm:h-6 px-1.5 text-base sm:text-xs input-field font-semibold text-accent text-center"
|
||||||
placeholder="Menge"
|
placeholder="Menge"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -1366,7 +1367,7 @@ export const SharedListsView: React.FC<SharedListsViewProps> = ({ onRefreshGloba
|
|||||||
onBlur={async () => {
|
onBlur={async () => {
|
||||||
await handleSaveQuantity(item.id, editingQtyValue);
|
await handleSaveQuantity(item.id, editingQtyValue);
|
||||||
}}
|
}}
|
||||||
className="w-16 h-6 px-1.5 text-xs input-field font-semibold text-accent text-center"
|
className="w-16 h-8 sm:h-6 px-1.5 text-base sm:text-xs input-field font-semibold text-accent text-center"
|
||||||
placeholder="Menge"
|
placeholder="Menge"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in new issue
Block a user