Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Dev -> Main for v2.7.4 #1988

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
FalkWolsky merged 54 commits into main from dev
Sep 2, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
47b7d6b
Styling update for username in user groups
kamalqureshi Jul 24, 2025
ee2c4f2
Updated editable styling for Text comp
kamalqureshi Jul 24, 2025
e0fa0b7
Consisten styles for button when disabled
kamalqureshi Jul 24, 2025
4d0d203
[Fix]: #1900 workspace create / all orgs
iamfaran Jul 25, 2025
48b2619
remove min 3 chars search logic from groupUsers
iamfaran Jul 25, 2025
f549801
[Fix]: #1826 refresh folder on press enter
iamfaran Jul 28, 2025
fa20d2e
[Fix]: #1862 able to edit the usergroups without navigate
iamfaran Jul 28, 2025
f3d08e9
[Feat]: #1883 add tab-index on buttons/checkbox/select
iamfaran Jul 28, 2025
4ff3470
Merge pull request #1913 from iamfaran/fix/1862-usergroups-edit
raheeliftikhar5 Jul 29, 2025
c9fab1f
Merge pull request #1912 from iamfaran/fix/1826-folder
raheeliftikhar5 Jul 29, 2025
55b6b54
Merge pull request #1911 from iamfaran/feat/1883-tab-index
raheeliftikhar5 Jul 29, 2025
7aa04be
Merge pull request #1902 from iamfaran/fix/1849-errors
raheeliftikhar5 Jul 29, 2025
2135ab8
Merge pull request #1901 from iamfaran/fix/1900-workspace-issue
raheeliftikhar5 Jul 29, 2025
c4c8640
Merge pull request #1897 from kamalqureshi/disabled_button_styling
raheeliftikhar5 Jul 29, 2025
be17830
Merge pull request #1896 from kamalqureshi/text_component_styling
raheeliftikhar5 Jul 29, 2025
b990841
Merge pull request #1895 from kamalqureshi/user_groups_format
raheeliftikhar5 Jul 29, 2025
62e83b8
fix remote components not working properly in list/grid comps
raheeliftikhar5 Jul 29, 2025
8fdbf5a
[Fix]: #1904 add permissions data sources
iamfaran Jul 29, 2025
24b78af
Merge branch 'dev' of github.com:lowcoder-org/lowcoder into fix/1904-...
iamfaran Jul 29, 2025
4ca237d
[Feat]: #1903 add isEdit mode util
iamfaran Jul 29, 2025
09164f7
Merge branch 'dev' of github.com:lowcoder-org/lowcoder into feat/1903...
iamfaran Jul 29, 2025
f62bf22
fixed min-width not working in responsive layout
raheeliftikhar5 Jul 29, 2025
9a52ed3
after updating input comp value inside form comp, it doesn't reflect ...
raheeliftikhar5 Jul 29, 2025
284fd1b
[Fix]: #1905 redux applications fix
iamfaran Jul 30, 2025
069c744
[Fix]: #1824 query as a last item in folder
iamfaran Jul 30, 2025
0ca398c
Merge pull request #1924 from iamfaran/fix/1905-apps-list
raheeliftikhar5 Jul 31, 2025
f4f6941
Merge pull request #1925 from iamfaran/fix/1824-drag-query
raheeliftikhar5 Jul 31, 2025
a6c5cf3
[Fix]: #1836 race condition barchart
iamfaran Jul 31, 2025
a362635
fix responsiveLayout issues
raheeliftikhar5 Aug 1, 2025
e025b64
[Fix]: #1905 create app issue
iamfaran Aug 1, 2025
81d8e1f
fix form component fields not resetting
raheeliftikhar5 Aug 1, 2025
6e9f52d
fix table column's padding
raheeliftikhar5 Aug 1, 2025
6660a8e
fix module autoheight taking more height
raheeliftikhar5 Aug 1, 2025
9ac3a8a
[Fix]: #1883 add tab-index on more controls
iamfaran Aug 1, 2025
d16e475
[Fix]: #1928 folder edit/create issues
iamfaran Aug 1, 2025
ec2edd6
Merge pull request #1932 from iamfaran/fix/1928-apps-folder
raheeliftikhar5 Aug 4, 2025
c690849
Merge pull request #1931 from iamfaran/feat/1883-more-tabindex
raheeliftikhar5 Aug 4, 2025
aecdd0d
Merge pull request #1930 from iamfaran/fix/1905-newapp-issue
raheeliftikhar5 Aug 4, 2025
1094c43
Merge pull request #1927 from iamfaran/fix/1836-barchart
raheeliftikhar5 Aug 4, 2025
d086fb7
Merge pull request #1920 from iamfaran/fix/1904-usergroups
raheeliftikhar5 Aug 4, 2025
1b98505
Merge pull request #1919 from iamfaran/feat/1903-editmode-util
raheeliftikhar5 Aug 4, 2025
d8ede2f
fix js query trigger on page load when used exposed variables are ref...
raheeliftikhar5 Aug 4, 2025
485cc3d
fixed form comp's resetAfterSuccess doesn't work
raheeliftikhar5 Aug 4, 2025
1671585
reduce input change debounce time
raheeliftikhar5 Aug 5, 2025
ccd5d17
[Fix]: #1935 add instant save for boolean, select and switch
iamfaran Aug 7, 2025
b5221db
[Fix]: #1907 mariadb in generate form datasource
iamfaran Aug 8, 2025
966d692
Merge pull request #1948 from iamfaran/fix/1907-mariadb-form
raheeliftikhar5 Aug 11, 2025
27ad5f9
[Fix]: remove duplicate event listeners
iamfaran Aug 11, 2025
bd9299f
Merge pull request #1944 from iamfaran/fix/1935-col-editable
raheeliftikhar5 Aug 11, 2025
5745ad0
fixed js query triggers multiple time on page load
raheeliftikhar5 Aug 11, 2025
a3ce205
Merge pull request #1956 from iamfaran/fix/table-events
raheeliftikhar5 Aug 11, 2025
1053d19
fixed color picker input styles
raheeliftikhar5 Aug 11, 2025
b13465e
fix calendar doubleclick event + added singleClick event
raheeliftikhar5 Aug 29, 2025
262a60b
Updating Version Numbers to prepare the Release
Sep 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion client/VERSION
View file Open in desktop
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.7.3
2.7.4
2 changes: 1 addition & 1 deletion client/package.json
View file Open in desktop
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "lowcoder-frontend",
"version": "2.7.3",
"version": "2.7.4",
"type": "module",
"private": true,
"workspaces": [
Expand Down
2 changes: 1 addition & 1 deletion client/packages/lowcoder-comps/package.json
View file Open in desktop
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "lowcoder-comps",
"version": "2.7.3",
"version": "2.7.4",
"type": "module",
"license": "MIT",
"dependencies": {
Expand Down
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ BarChartTmpComp = withViewFn(BarChartTmpComp, (comp) => {
const [chartSize, setChartSize] = useState<ChartSize>();
const firstResize = useRef(true);
const theme = useContext(ThemeContext);
const [chartKey, setChartKey] = useState(0);
const prevRaceMode = useRef<boolean>();
const defaultChartTheme = {
color: chartColorPalette,
backgroundColor: "#fff",
Expand All @@ -73,6 +75,16 @@ BarChartTmpComp = withViewFn(BarChartTmpComp, (comp) => {
log.error('theme chart error: ', error);
}

// Detect race mode changes and force chart recreation
const currentRaceMode = comp.children.chartConfig?.children?.comp?.children?.race?.getView();
useEffect(() => {
if (prevRaceMode.current !== undefined && prevRaceMode.current !== currentRaceMode) {
// Force chart recreation when race mode changes
setChartKey(prev => prev + 1);
}
prevRaceMode.current = currentRaceMode;
}, [currentRaceMode]);

const triggerClickEvent = async (dispatch: any, action: CompAction<JSONValue>) => {
await getPromiseAfterDispatch(
dispatch,
Expand Down Expand Up @@ -176,10 +188,11 @@ BarChartTmpComp = withViewFn(BarChartTmpComp, (comp) => {
return (
<div ref={containerRef} style={{height: '100%'}}>
<ReactECharts
key={chartKey}
ref={(e) => (echartsCompRef.current = e)}
style={{ height: "100%" }}
notMerge
lazyUpdate
notMerge={!currentRaceMode}
lazyUpdate={!currentRaceMode}
opts={{ locale: getEchartsLocale() }}
option={option}
mode={mode}
Expand Down
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,15 @@ export function getEchartsConfig(
animationEasing: 'linear',
animationEasingUpdate: 'linear',
}
} else {
// Ensure proper animation settings when race is disabled
config = {
...config,
animationDuration: 1000,
animationDurationUpdate: 1000,
animationEasing: 'cubicOut',
animationEasingUpdate: 'cubicOut',
}
}
if (props.data.length <= 0) {
// no data
Expand Down Expand Up @@ -333,6 +342,21 @@ export function getEchartsConfig(
animationDurationUpdate: 300
},
}
} else {
// Reset axis animations when race is disabled
config = {
...config,
xAxis: {
...config.xAxis,
animationDuration: undefined,
animationDurationUpdate: undefined
},
yAxis: {
...config.yAxis,
animationDuration: undefined,
animationDurationUpdate: undefined
},
}
}
}
// console.log("Echarts transformedData and config", transformedData, config);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ export const BarChartConfig = (function () {
type: "bar",
subtype: props.type,
realtimeSort: props.race,
seriesLayoutBy: props.race?'column':undefined,
seriesLayoutBy: props.race?'column':'row',
label: {
show: props.showLabel,
position: "top",
Expand Down
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ let CalendarBasicComp = (function () {
const ref = createRef<HTMLDivElement>();
const editEvent = useRef<EventInput>();
const initData = useRef<boolean>(false);
const clickTimeout = useRef<NodeJS.Timeout | null>(null);
const [form] = Form.useForm();
const [left, setLeft] = useState<number | undefined>(undefined);
const [licensed, setLicensed] = useState<boolean>(props.licenseKey !== "");
Expand Down Expand Up @@ -370,6 +371,15 @@ let CalendarBasicComp = (function () {
initData.current = true;
}
}, [JSON.stringify(initialEvents), comp?.children?.comp?.children?.initialData]);

// Cleanup timeout on unmount
useEffect(() => {
return () => {
if (clickTimeout.current) {
clearTimeout(clickTimeout.current);
}
};
}, []);

const resources = useMemo(() => props.resources.value, [props.resources.value]);

Expand Down Expand Up @@ -850,22 +860,30 @@ let CalendarBasicComp = (function () {
handleEventDataChange,
]);

const handleSingleClick = useCallback(() => {
// Prevent double click from triggering the event
// Use a timeout to debounce rapid clicks
if (clickTimeout.current) {
clearTimeout(clickTimeout.current);
clickTimeout.current = null;
return; // This was a double click, don't trigger
}

clickTimeout.current = setTimeout(() => {
props.onEvent('click');
clickTimeout.current = null;
}, 150); // Small delay to catch double clicks
}, [props.onEvent]);

const handleDbClick = useCallback(() => {
const event = props.updatedEventsData.find(
(item: EventType) => item.id === editEvent.current?.id
) as EventType;
if (!props.editable || !editEvent.current) {
return;
}
if (event) {
showModal(event, true);
if (onEventVal && onEventVal.some((e: any) => e.name === 'doubleClick')) {
// Check if 'doubleClick' is included in the array
props.onEvent('doubleClick');
} else {
if (onEventVal && onEventVal.some((e: any) => e.name === 'doubleClick')) {
// Check if 'doubleClick' is included in the array
props.onEvent('doubleClick');
} else {
showModal(editEvent.current as EventType, false);
}
showModal(editEvent.current as EventType, false);
}
}, [
editEvent,
Expand Down Expand Up @@ -974,6 +992,9 @@ let CalendarBasicComp = (function () {
allDaySlot={props.showAllDay}
eventContent={renderEventContent}
select={(info) => handleCreate(info)}
dateClick={() => {
handleSingleClick();
}}
eventClick={(info) => {
const event = events.find(
(item: EventInput) => item.id === info.event.id
Expand All @@ -982,6 +1003,7 @@ let CalendarBasicComp = (function () {
setTimeout(() => {
editEvent.current = undefined;
}, 500);
handleSingleClick();
}}
moreLinkClick={(info) => {
let left = 0;
Expand Down
9 changes: 5 additions & 4 deletions client/packages/lowcoder-core/lib/index.js
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -1692,11 +1692,12 @@ class CodeNode extends AbstractNode {
// if query is dependent on itself, mark as ready
if (pathsArr?.[0] === options?.queryName)
return;
// TODO: check if this is needed after removing lazy load
// wait for lazy loaded comps to load before executing query on page load
if (value && !Object.keys(value).length && paths.size) {
isFetching = true;
ready = false;
}
// if (value && !Object.keys(value).length && paths.size) {
// isFetching = true;
// ready = false;
// }
if (_.has(value, IS_FETCHING_FIELD)) {
isFetching = isFetching || value.isFetching === true;
}
Expand Down
9 changes: 5 additions & 4 deletions client/packages/lowcoder-core/src/eval/codeNode.tsx
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -176,11 +176,12 @@ export class CodeNode extends AbstractNode<ValueAndMsg<unknown>> {
// if query is dependent on itself, mark as ready
if (pathsArr?.[0] === options?.queryName) return;

// TODO: check if this is needed after removing lazy load
// wait for lazy loaded comps to load before executing query on page load
if (value && !Object.keys(value).length && paths.size) {
isFetching = true;
ready = false;
}
// if (value && !Object.keys(value).length && paths.size) {
// isFetching = true;
// ready = false;
// }
if (_.has(value, IS_FETCHING_FIELD)) {
isFetching = isFetching || value.isFetching === true;
}
Expand Down
2 changes: 1 addition & 1 deletion client/packages/lowcoder/package.json
View file Open in desktop
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "lowcoder",
"version": "2.7.3",
"version": "2.7.4",
"private": true,
"type": "module",
"main": "src/index.sdk.ts",
Expand Down
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ export default function DraggableMenuItem(props: IDraggableMenuItemProps) {
const canDropBefore = checkDroppableFlag(item.canDropBefore, activeNode?.data);
const canDropAfter = checkDroppableFlag(item.canDropAfter, activeNode?.data);

const lastChildNode = items[items.length - 1];
const canDropAfterLastChild = checkDroppableFlag(lastChildNode?.canDropAfter, activeNode?.data);

const dropData: IDropData = {
targetListSize: items.length,
targetPath: dropInAsSub ? [...path, 0] : [...path.slice(0, -1), path[path.length - 1] + 1],
Expand Down Expand Up @@ -136,6 +139,15 @@ export default function DraggableMenuItem(props: IDraggableMenuItemProps) {
/>
</Fragment>
))}
{activeNode && canDropAfterLastChild && (
<div style={{ position: "relative" }}>
<DroppablePlaceholder
targetListSize={-1}
path={[...path, items.length]}
disabled={isDragging || disabled}
/>
</div>
)}
</div>
)}
</>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { DatasourceRole } from "../../api/datasourcePermissionApi";
import { getDataSourcePermissionInfo } from "../../redux/selectors/datasourceSelectors";
import { StyledLoading } from "./commonComponents";
import { PermissionRole } from "./Permission";
import { getUser } from "../../redux/selectors/usersSelectors";

export const DatasourcePermissionDialog = (props: {
datasourceId: string;
Expand All @@ -22,6 +23,7 @@ export const DatasourcePermissionDialog = (props: {
const { datasourceId } = props;
const dispatch = useDispatch();
const permissionInfo = useSelector(getDataSourcePermissionInfo)[datasourceId];
const user = useSelector(getUser);

useEffect(() => {
dispatch(fetchDatasourcePermissions({ datasourceId: datasourceId }));
Expand Down Expand Up @@ -75,6 +77,8 @@ export const DatasourcePermissionDialog = (props: {
{ label: trans("share.datasourceOwner"), value: PermissionRole.Owner },
]}
permissionItems={permissions}
contextType="organization"
organizationId={user.currentOrgId}
viewBodyRender={(list) => {
if (!permissionInfo) {
return <StyledLoading size={18} />;
Expand Down
Loading
Loading

AltStyle によって変換されたページ (->オリジナル) /