4 Commits

Author SHA1 Message Date
Mo Tarbin
ddb726ad1f Bump version to 1.2.47
Some checks failed
Build validation / build (push) Has been cancelled
2026-08-14 08:59:25 -04:00
Mohamad Tarbin
67593ec284 Merge pull request #221 from donetick/0813-fixes
0813 fixes
2026-08-14 08:58:34 -04:00
Mo Tarbin
6bc5982294 fix: update key prop in SelectModal options to use item.id for consistency 2026-08-14 08:57:53 -04:00
Mo Tarbin
1dd01e0eca Fix: Fixing Select start render below the modal make it rendioner in modal but keep the modal small so completely overlap with it. fixing that by applying custom global class 2026-08-14 08:55:25 -04:00
5 changed files with 42 additions and 12 deletions

View File

@@ -13,8 +13,8 @@ android {
applicationId "com.donetick.app"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 67
versionName "1.2.46"
versionCode 68
versionName "1.2.47"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
aaptOptions {
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.

View File

@@ -462,12 +462,12 @@
CODE_SIGN_ALLOW_ENTITLEMENTS_MODIFICATION = YES;
CODE_SIGN_ENTITLEMENTS = App/App.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 67;
CURRENT_PROJECT_VERSION = 68;
DEVELOPMENT_TEAM = 6UJJ78R3BS;
INFOPLIST_FILE = App/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 1.2.46;
MARKETING_VERSION = 1.2.47;
PRODUCT_BUNDLE_IDENTIFIER = com.donetick.app;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
@@ -485,12 +485,12 @@
CODE_SIGN_IDENTITY = "Apple Distribution";
CODE_SIGN_STYLE = Manual;
PROVISIONING_PROFILE_SPECIFIER = "Donetick App Store(fastline)";
CURRENT_PROJECT_VERSION = 67;
CURRENT_PROJECT_VERSION = 68;
DEVELOPMENT_TEAM = 6UJJ78R3BS;
INFOPLIST_FILE = App/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 1.2.46;
MARKETING_VERSION = 1.2.47;
PRODUCT_BUNDLE_IDENTIFIER = com.donetick.app;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "";
@@ -504,12 +504,12 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = DonetickWidget/DonetickWidget.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 67;
CURRENT_PROJECT_VERSION = 68;
DEVELOPMENT_TEAM = 6UJJ78R3BS;
INFOPLIST_FILE = DonetickWidget/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
MARKETING_VERSION = 1.2.46;
MARKETING_VERSION = 1.2.47;
PRODUCT_BUNDLE_IDENTIFIER = com.donetick.app.widget;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
@@ -527,12 +527,12 @@
CODE_SIGN_IDENTITY = "Apple Distribution";
CODE_SIGN_STYLE = Manual;
PROVISIONING_PROFILE_SPECIFIER = "Donetick Widget App Store(fastline)";
CURRENT_PROJECT_VERSION = 67;
CURRENT_PROJECT_VERSION = 68;
DEVELOPMENT_TEAM = 6UJJ78R3BS;
INFOPLIST_FILE = DonetickWidget/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
MARKETING_VERSION = 1.2.46;
MARKETING_VERSION = 1.2.47;
PRODUCT_BUNDLE_IDENTIFIER = com.donetick.app.widget;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;

View File

@@ -1,7 +1,7 @@
{
"name": "donetick",
"private": true,
"version": "1.2.46",
"version": "1.2.47",
"type": "module",
"engines": {
"node": ">=20.0.0",

View File

@@ -31,6 +31,32 @@ const primaryPalette = getPalette(primaryColor)
const CONTROL_RADIUS = '12px'
const ICON_BUTTON_RADIUS = '10px'
// Select and Autocomplete both render their popup through @mui/base's Popper,
// which defaults to popper.js's `absolute` strategy — the popup is laid out in
// *document* coordinates. That is fine on desktop, but inside a mobile bottom
// sheet (viewport-pinned, body scroll locked by Modal) it puts the list below
// the fold or lets an overflow:hidden ancestor clip it, so it reads as trapped
// inside the modal. `fixed` positions it in viewport space instead, which no
// ancestor can clip.
//
// Note that slotProps coming from defaultProps are not deep merged: a call site
// passing its own slotProps.listbox replaces this wholesale.
const POPUP_LISTBOX = {
popperOptions: { strategy: 'fixed' },
modifiers: [
{ name: 'flip', options: { padding: 8 } },
// altAxis with tether off lets the popup shift fully back into view rather
// than staying glued to an anchor that has no room around it.
{
name: 'preventOverflow',
options: { padding: 8, altAxis: true, tether: false },
},
],
// Joy hardcodes 44vh, and vh resolves to the *large* viewport on mobile —
// taller than what is actually on screen while the browser chrome is up.
sx: { maxHeight: 'min(44dvh, 320px)' },
}
const themeConfig = {
radius: {
xs: '6px',
@@ -163,6 +189,10 @@ const themeConfig = {
theme.direction === 'rtl' ? buttonGroupRtlGeometry(ownerState) : {},
},
},
JoySelect: { defaultProps: { slotProps: { listbox: POPUP_LISTBOX } } },
JoyAutocomplete: {
defaultProps: { slotProps: { listbox: POPUP_LISTBOX } },
},
},
}

View File

@@ -44,7 +44,7 @@ function SelectModal({
onChange={(_, value) => setSelected(value)}
>
{options.map(item => (
<Option value={item.id} key={item[displayKey]}>
<Option value={item.id} key={item.id}>
{item[displayKey]}
</Option>
))}