Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ddb726ad1f | ||
|
|
67593ec284 | ||
|
|
6bc5982294 | ||
|
|
1dd01e0eca |
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "donetick",
|
||||
"private": true,
|
||||
"version": "1.2.46",
|
||||
"version": "1.2.47",
|
||||
"type": "module",
|
||||
"engines": {
|
||||
"node": ">=20.0.0",
|
||||
|
||||
@@ -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 } },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
))}
|
||||
|
||||
Reference in New Issue
Block a user