2022-08-03 13:50:50 +00:00
|
|
|
import React, { useEffect, useState, useRef, useContext } from 'react';
|
2021-09-17 14:02:50 +00:00
|
|
|
import { useSpring, config, animated } from 'react-spring';
|
2021-12-10 03:09:23 +00:00
|
|
|
import OverlayTrigger from 'react-bootstrap/OverlayTrigger';
|
|
|
|
|
import Tooltip from 'react-bootstrap/Tooltip';
|
2021-05-03 08:10:23 +00:00
|
|
|
import CodeMirror from '@uiw/react-codemirror';
|
2021-05-03 11:26:31 +00:00
|
|
|
import 'codemirror/mode/handlebars/handlebars';
|
2021-05-09 04:25:17 +00:00
|
|
|
import 'codemirror/mode/javascript/javascript';
|
2021-05-09 03:58:34 +00:00
|
|
|
import 'codemirror/mode/sql/sql';
|
2021-05-03 08:10:23 +00:00
|
|
|
import 'codemirror/addon/hint/show-hint';
|
2021-05-13 17:55:39 +00:00
|
|
|
import 'codemirror/addon/display/placeholder';
|
2021-05-03 08:10:23 +00:00
|
|
|
import 'codemirror/addon/search/match-highlighter';
|
2021-05-03 14:27:32 +00:00
|
|
|
import 'codemirror/addon/hint/show-hint.css';
|
2021-05-09 03:58:34 +00:00
|
|
|
import 'codemirror/theme/base16-light.css';
|
2021-09-15 15:40:59 +00:00
|
|
|
import 'codemirror/theme/duotone-light.css';
|
2021-07-03 17:07:50 +00:00
|
|
|
import 'codemirror/theme/monokai.css';
|
2022-07-11 10:30:18 +00:00
|
|
|
import { onBeforeChange, handleChange } from './utils';
|
2022-02-15 06:49:22 +00:00
|
|
|
import { resolveReferences, hasCircularDependency, handleCircularStructureToJSON } from '@/_helpers/utils';
|
2021-09-17 14:02:50 +00:00
|
|
|
import useHeight from '@/_hooks/use-height-transition';
|
2021-12-10 03:09:23 +00:00
|
|
|
import usePortal from '@/_hooks/use-portal';
|
2022-02-01 14:16:21 +00:00
|
|
|
import { Color } from './Elements/Color';
|
|
|
|
|
import { Json } from './Elements/Json';
|
|
|
|
|
import { Select } from './Elements/Select';
|
|
|
|
|
import { Toggle } from './Elements/Toggle';
|
|
|
|
|
import { AlignButtons } from './Elements/AlignButtons';
|
|
|
|
|
import { TypeMapping } from './TypeMapping';
|
2022-02-07 03:43:12 +00:00
|
|
|
import { Number } from './Elements/Number';
|
2022-07-11 09:49:28 +00:00
|
|
|
import { BoxShadow } from './Elements/BoxShadow';
|
2022-02-01 14:16:21 +00:00
|
|
|
import FxButton from './Elements/FxButton';
|
2022-03-31 09:44:45 +00:00
|
|
|
import { ToolTip } from '../Inspector/Elements/Components/ToolTip';
|
2022-06-02 07:27:20 +00:00
|
|
|
import { toast } from 'react-hot-toast';
|
2022-08-03 13:50:50 +00:00
|
|
|
import { EditorContext } from '@/Editor/Context/EditorContextWrapper';
|
2022-09-14 08:04:49 +00:00
|
|
|
import { camelCase } from 'lodash';
|
|
|
|
|
import { useTranslation } from 'react-i18next';
|
2023-05-30 03:51:57 +00:00
|
|
|
import cx from 'classnames';
|
2023-08-14 08:58:51 +00:00
|
|
|
import { Alert } from '@/_ui/Alert/Alert';
|
2023-07-19 06:12:28 +00:00
|
|
|
import { useCurrentState } from '@/_stores/currentStateStore';
|
2023-09-04 08:00:39 +00:00
|
|
|
import ClientServerSwitch from './Elements/ClientServerSwitch';
|
|
|
|
|
|
|
|
|
|
const HIDDEN_CODE_HINTER_LABELS = ['Table data', 'Column data'];
|
2022-02-01 14:16:21 +00:00
|
|
|
|
|
|
|
|
const AllElements = {
|
|
|
|
|
Color,
|
|
|
|
|
Json,
|
|
|
|
|
Toggle,
|
|
|
|
|
Select,
|
|
|
|
|
AlignButtons,
|
2022-02-07 03:43:12 +00:00
|
|
|
Number,
|
2022-07-11 09:49:28 +00:00
|
|
|
BoxShadow,
|
2023-09-04 08:00:39 +00:00
|
|
|
ClientServerSwitch,
|
2022-02-01 14:16:21 +00:00
|
|
|
};
|
2021-05-03 14:27:32 +00:00
|
|
|
|
2021-05-03 08:10:23 +00:00
|
|
|
export function CodeHinter({
|
2021-09-15 15:40:59 +00:00
|
|
|
initialValue,
|
|
|
|
|
onChange,
|
|
|
|
|
mode,
|
|
|
|
|
theme,
|
|
|
|
|
lineNumbers,
|
|
|
|
|
placeholder,
|
|
|
|
|
ignoreBraces,
|
|
|
|
|
enablePreview,
|
2021-08-21 04:09:04 +00:00
|
|
|
height,
|
|
|
|
|
minHeight,
|
2021-09-15 15:40:59 +00:00
|
|
|
lineWrapping,
|
2021-12-10 03:09:23 +00:00
|
|
|
componentName = null,
|
|
|
|
|
usePortalEditor = true,
|
2021-12-28 07:28:05 +00:00
|
|
|
className,
|
2022-02-07 10:38:42 +00:00
|
|
|
width = '',
|
2022-02-01 14:16:21 +00:00
|
|
|
paramName,
|
|
|
|
|
paramLabel,
|
|
|
|
|
type,
|
|
|
|
|
fieldMeta,
|
|
|
|
|
onFxPress,
|
|
|
|
|
fxActive,
|
2022-08-03 13:50:50 +00:00
|
|
|
component,
|
2022-11-17 08:39:44 +00:00
|
|
|
popOverCallback,
|
2022-11-11 05:45:12 +00:00
|
|
|
cyLabel = '',
|
2023-05-11 09:34:48 +00:00
|
|
|
callgpt = () => null,
|
2023-05-15 13:15:09 +00:00
|
|
|
isCopilotEnabled = false,
|
2023-07-20 11:05:39 +00:00
|
|
|
currentState: _currentState,
|
2023-09-08 11:18:44 +00:00
|
|
|
verticalLine = true,
|
2021-05-03 08:10:23 +00:00
|
|
|
}) {
|
2021-12-15 04:23:17 +00:00
|
|
|
const darkMode = localStorage.getItem('darkMode') === 'true';
|
2021-05-03 14:27:32 +00:00
|
|
|
const options = {
|
2021-12-10 03:09:23 +00:00
|
|
|
lineNumbers: lineNumbers ?? false,
|
|
|
|
|
lineWrapping: lineWrapping ?? true,
|
2021-05-03 14:27:32 +00:00
|
|
|
singleLine: true,
|
2021-05-09 03:58:34 +00:00
|
|
|
mode: mode || 'handlebars',
|
2021-05-03 14:27:32 +00:00
|
|
|
tabSize: 2,
|
2022-02-07 12:43:28 +00:00
|
|
|
theme: theme ? theme : darkMode ? 'monokai' : 'default',
|
2021-05-03 14:27:32 +00:00
|
|
|
readOnly: false,
|
2021-05-13 17:55:39 +00:00
|
|
|
highlightSelectionMatches: true,
|
2021-09-15 15:40:59 +00:00
|
|
|
placeholder,
|
2021-05-03 08:10:23 +00:00
|
|
|
};
|
2023-07-19 06:12:28 +00:00
|
|
|
const currentState = useCurrentState();
|
2021-05-09 03:20:26 +00:00
|
|
|
const [realState, setRealState] = useState(currentState);
|
Release : Appbuilder - appdefinition architecture revamp (#7448)
* importing service: updated
* import service, categorize and update events with associations
* fix: deleting events associated with pages on page delete
* handle app version: creation, updates, switching versions from app builder
* on version switch: no updates should be triggeted to server
* versioning for query events
* fixes: new components db transaction fails for newly created pages
* fixes: query chaining with events
* map older query ids to new for event action: run query
* fixes: multi-editor support
* fixes/multi-editor: users should be able to edit different version of the app at real time without sync
* minor fixes
* fixes: undo/redo savings with latest app def updates
* fixes: execution of page switch action
* fixes: csa events
* fixes: csa selection dropdown
* fixes: on csa action changed, the action params should also be updated correctly
* fixes: event rendering actions
* fixes: table event - row hovered
* fixes: table event - on search
* fixes: table event - onNewRowsAdded
* fixes: table event - onBulkUpdate
* fixes: table column updates
* fixes: table column updates to component definition
* re-order events
* handle adding widgets to sub containers
* fixes: csa for modals
* fixes: deletes children components on deleting parent
* fixes: components with default children
* fixed events for imported app
* gs- crash fix
* fixes: global settings UI
* fixes: header and user
* fixes: page switch event
* fixes: adapts to new event manager ui
* import app
* add event index for creating app versions
* fixes: table rendering on viewer
* fixes: event execution for viewer
* fixes: loading app with slug
* fixes: Page side bar is not rendered in viewer
* fixes: version manager ui for released versions
* fixes: tabs default children saving
* fixes: app resource mapping for parent-child components
* fixes: duplicate pages
* fixes: page load events for viewer
* fixes: enable and disable pages
* fixes: hide and show pages
* fixes: on maintaince toggle button
* fixes: new version child components are not tied to its parent
* fixes: redo breaks- on deleting a component and undo then redo (editor)
* new export schema and handling apps impport with new and older schemas
* table events: column and actions events
* fixes: query confirmations popup
* fixes: copy/paste
* fixes: cut/paste
* fixes: event mapping for newer versions for new components, pages and queries id
* fixes: app resource mapping for imported apps
* fixes: cascade events for table actions and colulmns
* Migrates the existing JSON-based app definition schema to a structured table-based architecture. This enhancement introduces component and page-specific permissions, improves data organization, and enables fine-grained access control. Additionally, it adds the 'globalSettings' column to the 'appVersion' table.
* cleanup
* fixes: enable and disable pages
* fixes: hide/show page and set saving state for cloning pages
* cleanup
* fixes: page disable menu
* fixes: migrations for data query events
* fixes: switching app version from version creation modal results in editor loading state
* fixes: setting up the page title
* fixes: Page duplication has same page handler name.
* fixes: updating general styles of a component
* fixes: delete component should trigger confirmations box for one widget and for multiple should process deletion
* fixes: CSA for button(component) does not work for page event handler.
* fixes: component name update [calendar]
* fixes: Duplicating pages do not create child components
* improves copy-paste mechanism of widgets
* fix: calendar subcontainer components comes out of the parent container on copy/paste
* fix:Form properties, no option for selecting submit button.
* fixes: Dark mode issue with event handler.
* fixes: display preferences for components
* fixes:have to select the selected version again to create a new
* fixes: Pages menu is not getting disabled when enabled and vice-versa
* fixes: correct naming of duplicating pages
* fixes: 2 action button even with no event attached to one, it gets attached to both.
* fixes: event deletion for action btn removal
* fixes: Keyboard action to move component is not saving
* reduce outbound calls when widget re-positioned with keyboard
* fixes: Not able to delete component from Inspector
* fixes: cloning of widgets
* fixes: Request confirmation before query run toggle is not visible on viewer mode. (can't run query if confirmation toggle is on)
* fixes: event sorting
* fixes: events mapping for versioning: queries and components
* fixes: importing app bug - query running issue when importing apps
* [appdef-2.0] fixes: event action linking for imported apps (#7627)
* fixes: event action linking for imported apps
* cleanup
* fixes: Toggling display preferences is not saving for components. (#7629)
* fixes: dnd issue for mobile view (#7632)
* default page menu settings should be true
* [appdef-2] event manager selector bug (#7631)
* fixes: on selecting query - 3 outbound calls are done to the server, and event manager re-renders 3times resulting in flikering ui
* reduces outbound calls for updating csa actions to 1
* [appdef] - copy associated events for cloned components (#7634)
* fixes: Copying component is not coping the events associated with the component.
* cleanup
* [appdef-2] : Fixes frontend issues (#7636)
* Fix UI issues
* Fix Scrollbar is not available after we pin the inspector.
* Fix button jumping places if switched from extended monitor to laptop.
* Fix white background around canvas
* fixes: Component inspector go blank after switching to different pages after dropping components (#7637)
* fixes: general properties of widgets are not getting saved (#7638)
* fixes: selecting the components via selecto (#7653)
* fixes: multiple undo-redo simlut. (#7656)
* fixes: copy associated events for cloned queries (#7657)
* Fixes not able toggle of Listview pagination toggle (#7701)
* Fix UI issues
* Fix Scrollbar is not available after we pin the inspector.
* Fix button jumping places if switched from extended monitor to laptop.
* fix enable pagination not getting toggled in listview
* Fix form children not being displayed
* fixes: dnd fix for widgets dropped inside subcontainer (#7691)
* [Appdef-2] copy-paste, cut and clone fix for widgets (#7687)
* fixes: copy/cut/paste and cloning of widgets
* cleanup
* can copy/paste-clone in listview
* fixes: on mulit-widget selected via mouse area selection: widget manager should be rendered (#7688)
* fixes: on deleting tabs widgets should delete its children (#7692)
* fixes: column data generated from restapi does not render correct columns in viewer (#7695)
* [appdef-2] fixes: multiple query confirmations trigger (#7704)
* fixes: multiple query confirmations trigger
* fixes: multiple outbound calls in the inital load, run queries on app load with confirmations:editor&viewer
* fixes: correct confirmations list to the stote
* [appdef-2] fixes:Event handler are running twice for page load (#7705)
* fixes:Event handler are running twice for page load(eg- add 2 show alert and change the page).
* fixes: for viewer page events
* fixes: container widget is not getting saved on drop (#7718)
* fixes: Create app version from is empty if we delete another version. (#7720)
* [appdef-2] fixes: on versioned app (switching or creating) version, the componet layout is wrongly updated to the container dnd (#7721)
* fixes: on versioned app (switching or creating) version, the component layout is wrongly updated to the container dnd
* fixes: container widget is not saving
* fixes: triggering confirmation box for every query with on load trigger (#7728)
* Fixes canvas background and go to app crashing (#7725)
* Fix UI issues
* Fix Scrollbar is not available after we pin the inspector.
* Fix button jumping places if switched from extended monitor to laptop.
* fix enable pagination not getting toggled in listview
* Fix form children not being displayed
* Fix Go to app is crashing the application.
* Fix fx for canvas background color is not working.
* fixes: cloned/copied table with actions (#7758)
* fixes: calendar and form widgets (#7735)
* fixes: rendering of components in viewer for mobile (#7759)
* fixes: toggling, resizing, dropping widgets in both display preferences (#7760)
* fixes: page switch action via runjs actions (#7762)
* fixes: component validations do not get saved (#7766)
* [appdef-2] subcontainer dnd height outbound fix (#7767)
* fixes: listview children can be dragged outside its outbound limit
* cleanup
* fixes: widget inspector going to empty component (#7768)
* fixes: goToApp not running from runjs in viewer mode (#7770)
* fixes: multi-components cloning or copy/paste have same name (#7761)
* Fix disabled page is being displayed on switch page event dropdown (#7769)
* Fix kanban rendering leading to infinite look
* Fix disabled page is being displayed on switch page event dropdown
* Fix Kanban widget getting into infinite loop (#7808)
* Fix kanban rendering leading to infinite look
* Fix disabled page is being displayed on switch page event dropdown
* Fix kanban getting into infinite loop
* adds support of constants to current state of the ediotr (#7821)
* removes loader added for testing (#7822)
* [appdef] fixes - dnd container cloning edge cases (#7820)
* fixes: copy/pasting components updating wrong display preferences
* fixes: copy/pasting tabs and cloning components inside tabs
* fixes: duplication of calendar component bug
* if components in subcontainer(children) are selected via selecto along with its parent, children should not be going through duplication
* if components in subcontainer(children) are selected via selecto along with its parent, children should not be going through duplication
* fixes: Resolving App Version and Timestamp Update Challenges (#7863)
* Fixes query confirmation issue on viewer (#7862)
* [appdef ]fixes: components copied from template app to a new page or app do not render in canvas (#7867)
* fixes: components copied from template app to a new page or app does not render in canvas
* fixes: table crash on coping from other pages with columns
* adds the column exists check
* fixes: tables crash for imported apps with auto generated cols
* appdefinition refactor/cleanup (#7872)
* cleanup controllers and request calls from frontend
* removing unwanted console logs and unused variables
* revering v1 apis og
* adding length validation for page dto
* adding dtos for components
* updated dtos for components and pages
* added dto for event handlers
* fixes event handler dto
* fixes: page dto
* adds/fixes event handlers creating dtp
* fixes: event handler service and dtos
* [appdef] fixes: Creating page not changing the slug (#7873)
* fixes: Creating page not changing the slug
* removes extra whitespace
* [appdef] fixes: on importing a exported app child components are not present in the parent component (#7864)
* fixes: on importing a exported app child components are not present in the parent component
* handles parent component mapping for tabs and calendar component
* handles parent component mapping for tabs and calendar component for new versions
* [appdef] api endpoint fixes (#7888)
* fixes: moved fetching app version to v2 api
* fixes: app slug api
* Fixes CurrentUser & Mode not present in globals in inspector (#7812)
* Fix current user not being present in inspector
* Add Mode in globas in inspector
* Fix creating page not changing the slug.
* Revert "Fix creating page not changing the slug."
This reverts commit 0ff9c18ab8b622a0fa96f6d7b200898c19b060f4.
* Fixes on adding query params in event handler, breaking the app (#7889)
* Fix on version change if left sidebar is open canvas not scrolling right
* Fix on adding query params in event handler, breaking the app
* Fix
* Fix on version change if left sidebar is open canvas not scrolling right (#7884)
* fixes: fixes on on app load switch page action via run queires (#7858)
* fixes: fixes on on app load switch page action via run queires
* Fix
* refactor
* Fix on load event not appearing on viewer
---------
Co-authored-by: Nakul Nagargade <nakul@tooljet.com>
* [appdef] fixes: event actions mapping for import-export (#7895)
* fixes: event actions mapping for import-export
* fixes: updates organisation id
* fixes: templates event mapping
* do not app again for not normalized apps
* [appdef]migrations fix (#7910)
* fixes: page attributes
* fixes: table action and column events for imported apps (prev) and app migrations
* adds processDataInBatches
* fixes: app data migrations
* create a new queryBuilder instance for each batch to ensure that there's no interference between batches
* fix: app migration
* cleanup
* cleanup
* fixes: table column data not updated on boxes changes in container (#7919)
* fixes: creating all pages from all versions (#7905)
* Fix state not changing in chart (#7900)
* Fix in chart, toggles are not working
* Update Chart.jsx
---------
Co-authored-by: Arpit <arpitnath42@gmail.com>
* fix event param not updating (#7902)
* [appdef] Pages attributes are missing on versioning or imported app (#7904)
* fixes: on creating new version pages attributes are not copied
* fixes: on importing apps with pages attributes are not copied
* fixes: component double duplication issues
* fixes: deleting children components via selecto (#7915)
* fixes: component deletion fixes
* fixes: cloning components to a new version should also create associated events
* fixes: creating components on cloning with general styles or properties
* fixes: creatinng general properties on version
* fixes: imported app
* fixes added to app migrations
* fixes: mobile view
* fixes: Created a new version with multiple pages from second page, the new version shows the homepage with second page URL
* fixes: table crash due to columnDeletionHistory saved as an object instead of an array
* fixes: on creating new version, data_queries should be created (#7975)
* [appdef] fixes: migrations (#7951)
* refactor migrations with batching
* event actions: switch page should be mapped to correct new page id
* fixes: importing json-schema app with multiple version: same components do not get render in the canvas
* fixes: import/export of legecy apps
* event actions mapping to correct page ids: migrations
* fixes: migrations children not rendered in subcontainer components
* adapts to main/viewer changes
* fixes: viewer with #6698
* fixes: viewer route
* fixes: page switch via validateRoutes
* fixes: on delete version fetchApp fails
* handle error on saving changes
* skip name opts
* typo fix
* Instead of relying on the schema, we choose to use the Tooljet version as the determining factor for decoupling import flows
* fixes: slug updates from global settings
* fixes: slug app link (#8008)
* fixes: on version changed the preview link should also update (#8009)
* fixes: on cut and paste events should not cascade (#8010)
* fixes: query options to new mapped ids
* [appdef] fixes: cloning apps (#8012)
* fixes: cloning apps
* fixes: slug status from share modal
* fixes: query confirmations list on viewer (#8017)
* undo-fix
* fixes: updates current state with page data on creating new page
* Fix failing specs (#8031)
* [appdef] fixes : ghost child components are being created on imported/cloned apps and while migrating (#8026)
* fixes: ignore ghost components while importing
* added the fix in migrations
* fixes: adding other components
* fixes: table column resizes
* updates layout dto
* update component dto
* fixes: tabs children are not rendered as the are not in their repsective parent container (#8036)
* moving editorFunc to Editor.jsx
* cleanup
* fixes: e2e test for clone
* cleanup
* fixes: toggle maintaince
* bumping version
* multi-edit: ymap-fix-1
* Revert "multi-edit: ymap-fix-1"
This reverts commit 8b799c3c51bc45179d2ad4ef405d6a234083d475.
* [appdef] fixes: viewer route: keeps on reloading for private apps (#8051)
* fixes: viewer route: keeps on reloading for pribate apps
* should return the response
* test: ymap updates-1
* fixes: v1 apps with dq queries resuts in app crash
* Updated import spec
* Revert "Updated import spec"
This reverts commit 802136cdc3f06ee6debe3612999593a872b65bb1.
* Fixed failed platform test cases for app desinition re-design (#8053)
* Fix failed platform test cases
* Modify user permission test cases
* fixes: trial-5: fixing vanishing of components
* Revert "fixes: trial-5: fixing vanishing of components"
This reverts commit a22aec12c789d5bd1c9c1e9cea7d9fb1eef87bfb.
* fixes: trail-6: fix
* fixes: trail-7: fix
* Revert "fixes: trail-7: fix"
This reverts commit 08f373c415b9f1599eff9e397f7c4ffbc3f364b8.
* Revert "fixes: trail-6: fix"
This reverts commit c4e19b5d05c94d8c1d5a6ad37263bcec7dcdccb1.
* multi-edit: ymap-fix
* Revert "multi-edit: ymap-fix"
This reverts commit 92f49c0cde33818c9a85478f8dfc3b59a629c3d7.
* fixes: multi-user updates: adding or removing
* event handlers sycned for multi-user
* should take slug instead of appid if slug is present
* updating adding ymap logic
* versioning with multi-user
* fixes: saving issue
* dont skip ymap
* adds delay to ymap
* ymap-update-order-fixed
* ymap-update-order-fixed-1.1
* ymap-update-order-fixed-1.2
* test=fix
* Updated import spec (#8061)
* cleanup
* lint fixed
* fixes: cloning apps with tabs
* veiwer on event should return
* fixes: event should map with show/hide modal component id
* Fix failing appbuilder specs (#8117)
* cherrypicked ee/00195c064
* bumping version to v2.24.0
* fixed modal actionid typo
* fixes: slugs issues for released an public apps (#8119)
* Fix failed test cases (#8121)
* reverting global slug input
* fixes: versioning with cloned page and ghost components (#8122)
---------
Co-authored-by: Nakul Nagargade <133095394+nakulnagargade@users.noreply.github.com>
Co-authored-by: Kavin Venkatachalam <50441969+kavinvenkatachalam@users.noreply.github.com>
Co-authored-by: Nakul Nagargade <nakul@tooljet.com>
Co-authored-by: Midhun Kumar E <midhun752@gmail.com>
Co-authored-by: nandinisaha13 <nandinisaha13@gmail.com>
Co-authored-by: Mekhla Asopa <dadhichmekhla@gmail.com>
Co-authored-by: Ajith KV <ajith.jaban@gmail.com>
Co-authored-by: Mekhla Asopa <59684099+Mekhla-Asopa@users.noreply.github.com>
2023-11-08 05:39:47 +00:00
|
|
|
const [currentValue, setCurrentValue] = useState('');
|
2023-08-31 08:10:04 +00:00
|
|
|
|
|
|
|
|
const [prevCurrentValue, setPrevCurrentValue] = useState(null);
|
|
|
|
|
const [resolvedValue, setResolvedValue] = useState(null);
|
|
|
|
|
const [resolvingError, setResolvingError] = useState(null);
|
|
|
|
|
|
2021-09-15 15:40:59 +00:00
|
|
|
const [isFocused, setFocused] = useState(false);
|
2021-09-17 14:02:50 +00:00
|
|
|
const [heightRef, currentHeight] = useHeight();
|
2022-06-02 07:27:20 +00:00
|
|
|
const isPreviewFocused = useRef(false);
|
|
|
|
|
const wrapperRef = useRef(null);
|
2023-08-14 08:58:51 +00:00
|
|
|
|
|
|
|
|
// Todo: Remove this when workspace variables are deprecated
|
|
|
|
|
const isWorkspaceVariable =
|
|
|
|
|
typeof currentValue === 'string' && (currentValue.includes('%%client') || currentValue.includes('%%server'));
|
|
|
|
|
|
2021-09-17 14:02:50 +00:00
|
|
|
const slideInStyles = useSpring({
|
|
|
|
|
config: { ...config.stiff },
|
|
|
|
|
from: { opacity: 0, height: 0 },
|
|
|
|
|
to: {
|
|
|
|
|
opacity: isFocused ? 1 : 0,
|
2023-08-14 08:58:51 +00:00
|
|
|
height: isFocused ? currentHeight + (isWorkspaceVariable ? 30 : 0) : 0,
|
2021-09-17 14:02:50 +00:00
|
|
|
},
|
|
|
|
|
});
|
2022-09-14 08:04:49 +00:00
|
|
|
const { t } = useTranslation();
|
2022-08-03 13:50:50 +00:00
|
|
|
const { variablesExposedForPreview } = useContext(EditorContext);
|
2022-06-02 07:27:20 +00:00
|
|
|
const prevCountRef = useRef(false);
|
|
|
|
|
|
Release : Appbuilder - appdefinition architecture revamp (#7448)
* importing service: updated
* import service, categorize and update events with associations
* fix: deleting events associated with pages on page delete
* handle app version: creation, updates, switching versions from app builder
* on version switch: no updates should be triggeted to server
* versioning for query events
* fixes: new components db transaction fails for newly created pages
* fixes: query chaining with events
* map older query ids to new for event action: run query
* fixes: multi-editor support
* fixes/multi-editor: users should be able to edit different version of the app at real time without sync
* minor fixes
* fixes: undo/redo savings with latest app def updates
* fixes: execution of page switch action
* fixes: csa events
* fixes: csa selection dropdown
* fixes: on csa action changed, the action params should also be updated correctly
* fixes: event rendering actions
* fixes: table event - row hovered
* fixes: table event - on search
* fixes: table event - onNewRowsAdded
* fixes: table event - onBulkUpdate
* fixes: table column updates
* fixes: table column updates to component definition
* re-order events
* handle adding widgets to sub containers
* fixes: csa for modals
* fixes: deletes children components on deleting parent
* fixes: components with default children
* fixed events for imported app
* gs- crash fix
* fixes: global settings UI
* fixes: header and user
* fixes: page switch event
* fixes: adapts to new event manager ui
* import app
* add event index for creating app versions
* fixes: table rendering on viewer
* fixes: event execution for viewer
* fixes: loading app with slug
* fixes: Page side bar is not rendered in viewer
* fixes: version manager ui for released versions
* fixes: tabs default children saving
* fixes: app resource mapping for parent-child components
* fixes: duplicate pages
* fixes: page load events for viewer
* fixes: enable and disable pages
* fixes: hide and show pages
* fixes: on maintaince toggle button
* fixes: new version child components are not tied to its parent
* fixes: redo breaks- on deleting a component and undo then redo (editor)
* new export schema and handling apps impport with new and older schemas
* table events: column and actions events
* fixes: query confirmations popup
* fixes: copy/paste
* fixes: cut/paste
* fixes: event mapping for newer versions for new components, pages and queries id
* fixes: app resource mapping for imported apps
* fixes: cascade events for table actions and colulmns
* Migrates the existing JSON-based app definition schema to a structured table-based architecture. This enhancement introduces component and page-specific permissions, improves data organization, and enables fine-grained access control. Additionally, it adds the 'globalSettings' column to the 'appVersion' table.
* cleanup
* fixes: enable and disable pages
* fixes: hide/show page and set saving state for cloning pages
* cleanup
* fixes: page disable menu
* fixes: migrations for data query events
* fixes: switching app version from version creation modal results in editor loading state
* fixes: setting up the page title
* fixes: Page duplication has same page handler name.
* fixes: updating general styles of a component
* fixes: delete component should trigger confirmations box for one widget and for multiple should process deletion
* fixes: CSA for button(component) does not work for page event handler.
* fixes: component name update [calendar]
* fixes: Duplicating pages do not create child components
* improves copy-paste mechanism of widgets
* fix: calendar subcontainer components comes out of the parent container on copy/paste
* fix:Form properties, no option for selecting submit button.
* fixes: Dark mode issue with event handler.
* fixes: display preferences for components
* fixes:have to select the selected version again to create a new
* fixes: Pages menu is not getting disabled when enabled and vice-versa
* fixes: correct naming of duplicating pages
* fixes: 2 action button even with no event attached to one, it gets attached to both.
* fixes: event deletion for action btn removal
* fixes: Keyboard action to move component is not saving
* reduce outbound calls when widget re-positioned with keyboard
* fixes: Not able to delete component from Inspector
* fixes: cloning of widgets
* fixes: Request confirmation before query run toggle is not visible on viewer mode. (can't run query if confirmation toggle is on)
* fixes: event sorting
* fixes: events mapping for versioning: queries and components
* fixes: importing app bug - query running issue when importing apps
* [appdef-2.0] fixes: event action linking for imported apps (#7627)
* fixes: event action linking for imported apps
* cleanup
* fixes: Toggling display preferences is not saving for components. (#7629)
* fixes: dnd issue for mobile view (#7632)
* default page menu settings should be true
* [appdef-2] event manager selector bug (#7631)
* fixes: on selecting query - 3 outbound calls are done to the server, and event manager re-renders 3times resulting in flikering ui
* reduces outbound calls for updating csa actions to 1
* [appdef] - copy associated events for cloned components (#7634)
* fixes: Copying component is not coping the events associated with the component.
* cleanup
* [appdef-2] : Fixes frontend issues (#7636)
* Fix UI issues
* Fix Scrollbar is not available after we pin the inspector.
* Fix button jumping places if switched from extended monitor to laptop.
* Fix white background around canvas
* fixes: Component inspector go blank after switching to different pages after dropping components (#7637)
* fixes: general properties of widgets are not getting saved (#7638)
* fixes: selecting the components via selecto (#7653)
* fixes: multiple undo-redo simlut. (#7656)
* fixes: copy associated events for cloned queries (#7657)
* Fixes not able toggle of Listview pagination toggle (#7701)
* Fix UI issues
* Fix Scrollbar is not available after we pin the inspector.
* Fix button jumping places if switched from extended monitor to laptop.
* fix enable pagination not getting toggled in listview
* Fix form children not being displayed
* fixes: dnd fix for widgets dropped inside subcontainer (#7691)
* [Appdef-2] copy-paste, cut and clone fix for widgets (#7687)
* fixes: copy/cut/paste and cloning of widgets
* cleanup
* can copy/paste-clone in listview
* fixes: on mulit-widget selected via mouse area selection: widget manager should be rendered (#7688)
* fixes: on deleting tabs widgets should delete its children (#7692)
* fixes: column data generated from restapi does not render correct columns in viewer (#7695)
* [appdef-2] fixes: multiple query confirmations trigger (#7704)
* fixes: multiple query confirmations trigger
* fixes: multiple outbound calls in the inital load, run queries on app load with confirmations:editor&viewer
* fixes: correct confirmations list to the stote
* [appdef-2] fixes:Event handler are running twice for page load (#7705)
* fixes:Event handler are running twice for page load(eg- add 2 show alert and change the page).
* fixes: for viewer page events
* fixes: container widget is not getting saved on drop (#7718)
* fixes: Create app version from is empty if we delete another version. (#7720)
* [appdef-2] fixes: on versioned app (switching or creating) version, the componet layout is wrongly updated to the container dnd (#7721)
* fixes: on versioned app (switching or creating) version, the component layout is wrongly updated to the container dnd
* fixes: container widget is not saving
* fixes: triggering confirmation box for every query with on load trigger (#7728)
* Fixes canvas background and go to app crashing (#7725)
* Fix UI issues
* Fix Scrollbar is not available after we pin the inspector.
* Fix button jumping places if switched from extended monitor to laptop.
* fix enable pagination not getting toggled in listview
* Fix form children not being displayed
* Fix Go to app is crashing the application.
* Fix fx for canvas background color is not working.
* fixes: cloned/copied table with actions (#7758)
* fixes: calendar and form widgets (#7735)
* fixes: rendering of components in viewer for mobile (#7759)
* fixes: toggling, resizing, dropping widgets in both display preferences (#7760)
* fixes: page switch action via runjs actions (#7762)
* fixes: component validations do not get saved (#7766)
* [appdef-2] subcontainer dnd height outbound fix (#7767)
* fixes: listview children can be dragged outside its outbound limit
* cleanup
* fixes: widget inspector going to empty component (#7768)
* fixes: goToApp not running from runjs in viewer mode (#7770)
* fixes: multi-components cloning or copy/paste have same name (#7761)
* Fix disabled page is being displayed on switch page event dropdown (#7769)
* Fix kanban rendering leading to infinite look
* Fix disabled page is being displayed on switch page event dropdown
* Fix Kanban widget getting into infinite loop (#7808)
* Fix kanban rendering leading to infinite look
* Fix disabled page is being displayed on switch page event dropdown
* Fix kanban getting into infinite loop
* adds support of constants to current state of the ediotr (#7821)
* removes loader added for testing (#7822)
* [appdef] fixes - dnd container cloning edge cases (#7820)
* fixes: copy/pasting components updating wrong display preferences
* fixes: copy/pasting tabs and cloning components inside tabs
* fixes: duplication of calendar component bug
* if components in subcontainer(children) are selected via selecto along with its parent, children should not be going through duplication
* if components in subcontainer(children) are selected via selecto along with its parent, children should not be going through duplication
* fixes: Resolving App Version and Timestamp Update Challenges (#7863)
* Fixes query confirmation issue on viewer (#7862)
* [appdef ]fixes: components copied from template app to a new page or app do not render in canvas (#7867)
* fixes: components copied from template app to a new page or app does not render in canvas
* fixes: table crash on coping from other pages with columns
* adds the column exists check
* fixes: tables crash for imported apps with auto generated cols
* appdefinition refactor/cleanup (#7872)
* cleanup controllers and request calls from frontend
* removing unwanted console logs and unused variables
* revering v1 apis og
* adding length validation for page dto
* adding dtos for components
* updated dtos for components and pages
* added dto for event handlers
* fixes event handler dto
* fixes: page dto
* adds/fixes event handlers creating dtp
* fixes: event handler service and dtos
* [appdef] fixes: Creating page not changing the slug (#7873)
* fixes: Creating page not changing the slug
* removes extra whitespace
* [appdef] fixes: on importing a exported app child components are not present in the parent component (#7864)
* fixes: on importing a exported app child components are not present in the parent component
* handles parent component mapping for tabs and calendar component
* handles parent component mapping for tabs and calendar component for new versions
* [appdef] api endpoint fixes (#7888)
* fixes: moved fetching app version to v2 api
* fixes: app slug api
* Fixes CurrentUser & Mode not present in globals in inspector (#7812)
* Fix current user not being present in inspector
* Add Mode in globas in inspector
* Fix creating page not changing the slug.
* Revert "Fix creating page not changing the slug."
This reverts commit 0ff9c18ab8b622a0fa96f6d7b200898c19b060f4.
* Fixes on adding query params in event handler, breaking the app (#7889)
* Fix on version change if left sidebar is open canvas not scrolling right
* Fix on adding query params in event handler, breaking the app
* Fix
* Fix on version change if left sidebar is open canvas not scrolling right (#7884)
* fixes: fixes on on app load switch page action via run queires (#7858)
* fixes: fixes on on app load switch page action via run queires
* Fix
* refactor
* Fix on load event not appearing on viewer
---------
Co-authored-by: Nakul Nagargade <nakul@tooljet.com>
* [appdef] fixes: event actions mapping for import-export (#7895)
* fixes: event actions mapping for import-export
* fixes: updates organisation id
* fixes: templates event mapping
* do not app again for not normalized apps
* [appdef]migrations fix (#7910)
* fixes: page attributes
* fixes: table action and column events for imported apps (prev) and app migrations
* adds processDataInBatches
* fixes: app data migrations
* create a new queryBuilder instance for each batch to ensure that there's no interference between batches
* fix: app migration
* cleanup
* cleanup
* fixes: table column data not updated on boxes changes in container (#7919)
* fixes: creating all pages from all versions (#7905)
* Fix state not changing in chart (#7900)
* Fix in chart, toggles are not working
* Update Chart.jsx
---------
Co-authored-by: Arpit <arpitnath42@gmail.com>
* fix event param not updating (#7902)
* [appdef] Pages attributes are missing on versioning or imported app (#7904)
* fixes: on creating new version pages attributes are not copied
* fixes: on importing apps with pages attributes are not copied
* fixes: component double duplication issues
* fixes: deleting children components via selecto (#7915)
* fixes: component deletion fixes
* fixes: cloning components to a new version should also create associated events
* fixes: creating components on cloning with general styles or properties
* fixes: creatinng general properties on version
* fixes: imported app
* fixes added to app migrations
* fixes: mobile view
* fixes: Created a new version with multiple pages from second page, the new version shows the homepage with second page URL
* fixes: table crash due to columnDeletionHistory saved as an object instead of an array
* fixes: on creating new version, data_queries should be created (#7975)
* [appdef] fixes: migrations (#7951)
* refactor migrations with batching
* event actions: switch page should be mapped to correct new page id
* fixes: importing json-schema app with multiple version: same components do not get render in the canvas
* fixes: import/export of legecy apps
* event actions mapping to correct page ids: migrations
* fixes: migrations children not rendered in subcontainer components
* adapts to main/viewer changes
* fixes: viewer with #6698
* fixes: viewer route
* fixes: page switch via validateRoutes
* fixes: on delete version fetchApp fails
* handle error on saving changes
* skip name opts
* typo fix
* Instead of relying on the schema, we choose to use the Tooljet version as the determining factor for decoupling import flows
* fixes: slug updates from global settings
* fixes: slug app link (#8008)
* fixes: on version changed the preview link should also update (#8009)
* fixes: on cut and paste events should not cascade (#8010)
* fixes: query options to new mapped ids
* [appdef] fixes: cloning apps (#8012)
* fixes: cloning apps
* fixes: slug status from share modal
* fixes: query confirmations list on viewer (#8017)
* undo-fix
* fixes: updates current state with page data on creating new page
* Fix failing specs (#8031)
* [appdef] fixes : ghost child components are being created on imported/cloned apps and while migrating (#8026)
* fixes: ignore ghost components while importing
* added the fix in migrations
* fixes: adding other components
* fixes: table column resizes
* updates layout dto
* update component dto
* fixes: tabs children are not rendered as the are not in their repsective parent container (#8036)
* moving editorFunc to Editor.jsx
* cleanup
* fixes: e2e test for clone
* cleanup
* fixes: toggle maintaince
* bumping version
* multi-edit: ymap-fix-1
* Revert "multi-edit: ymap-fix-1"
This reverts commit 8b799c3c51bc45179d2ad4ef405d6a234083d475.
* [appdef] fixes: viewer route: keeps on reloading for private apps (#8051)
* fixes: viewer route: keeps on reloading for pribate apps
* should return the response
* test: ymap updates-1
* fixes: v1 apps with dq queries resuts in app crash
* Updated import spec
* Revert "Updated import spec"
This reverts commit 802136cdc3f06ee6debe3612999593a872b65bb1.
* Fixed failed platform test cases for app desinition re-design (#8053)
* Fix failed platform test cases
* Modify user permission test cases
* fixes: trial-5: fixing vanishing of components
* Revert "fixes: trial-5: fixing vanishing of components"
This reverts commit a22aec12c789d5bd1c9c1e9cea7d9fb1eef87bfb.
* fixes: trail-6: fix
* fixes: trail-7: fix
* Revert "fixes: trail-7: fix"
This reverts commit 08f373c415b9f1599eff9e397f7c4ffbc3f364b8.
* Revert "fixes: trail-6: fix"
This reverts commit c4e19b5d05c94d8c1d5a6ad37263bcec7dcdccb1.
* multi-edit: ymap-fix
* Revert "multi-edit: ymap-fix"
This reverts commit 92f49c0cde33818c9a85478f8dfc3b59a629c3d7.
* fixes: multi-user updates: adding or removing
* event handlers sycned for multi-user
* should take slug instead of appid if slug is present
* updating adding ymap logic
* versioning with multi-user
* fixes: saving issue
* dont skip ymap
* adds delay to ymap
* ymap-update-order-fixed
* ymap-update-order-fixed-1.1
* ymap-update-order-fixed-1.2
* test=fix
* Updated import spec (#8061)
* cleanup
* lint fixed
* fixes: cloning apps with tabs
* veiwer on event should return
* fixes: event should map with show/hide modal component id
* Fix failing appbuilder specs (#8117)
* cherrypicked ee/00195c064
* bumping version to v2.24.0
* fixed modal actionid typo
* fixes: slugs issues for released an public apps (#8119)
* Fix failed test cases (#8121)
* reverting global slug input
* fixes: versioning with cloned page and ghost components (#8122)
---------
Co-authored-by: Nakul Nagargade <133095394+nakulnagargade@users.noreply.github.com>
Co-authored-by: Kavin Venkatachalam <50441969+kavinvenkatachalam@users.noreply.github.com>
Co-authored-by: Nakul Nagargade <nakul@tooljet.com>
Co-authored-by: Midhun Kumar E <midhun752@gmail.com>
Co-authored-by: nandinisaha13 <nandinisaha13@gmail.com>
Co-authored-by: Mekhla Asopa <dadhichmekhla@gmail.com>
Co-authored-by: Ajith KV <ajith.jaban@gmail.com>
Co-authored-by: Mekhla Asopa <59684099+Mekhla-Asopa@users.noreply.github.com>
2023-11-08 05:39:47 +00:00
|
|
|
useEffect(() => {
|
|
|
|
|
setCurrentValue(initialValue);
|
|
|
|
|
|
|
|
|
|
return () => {
|
|
|
|
|
setPrevCurrentValue(null);
|
|
|
|
|
setResolvedValue(null);
|
|
|
|
|
setResolvingError(null);
|
|
|
|
|
};
|
|
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
|
|
|
}, []);
|
|
|
|
|
|
2021-05-09 03:20:26 +00:00
|
|
|
useEffect(() => {
|
2023-07-20 11:05:39 +00:00
|
|
|
if (_currentState) {
|
|
|
|
|
setRealState(_currentState);
|
|
|
|
|
} else {
|
|
|
|
|
setRealState(currentState);
|
|
|
|
|
}
|
2021-09-21 13:48:28 +00:00
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
Release : Appbuilder - appdefinition architecture revamp (#7448)
* importing service: updated
* import service, categorize and update events with associations
* fix: deleting events associated with pages on page delete
* handle app version: creation, updates, switching versions from app builder
* on version switch: no updates should be triggeted to server
* versioning for query events
* fixes: new components db transaction fails for newly created pages
* fixes: query chaining with events
* map older query ids to new for event action: run query
* fixes: multi-editor support
* fixes/multi-editor: users should be able to edit different version of the app at real time without sync
* minor fixes
* fixes: undo/redo savings with latest app def updates
* fixes: execution of page switch action
* fixes: csa events
* fixes: csa selection dropdown
* fixes: on csa action changed, the action params should also be updated correctly
* fixes: event rendering actions
* fixes: table event - row hovered
* fixes: table event - on search
* fixes: table event - onNewRowsAdded
* fixes: table event - onBulkUpdate
* fixes: table column updates
* fixes: table column updates to component definition
* re-order events
* handle adding widgets to sub containers
* fixes: csa for modals
* fixes: deletes children components on deleting parent
* fixes: components with default children
* fixed events for imported app
* gs- crash fix
* fixes: global settings UI
* fixes: header and user
* fixes: page switch event
* fixes: adapts to new event manager ui
* import app
* add event index for creating app versions
* fixes: table rendering on viewer
* fixes: event execution for viewer
* fixes: loading app with slug
* fixes: Page side bar is not rendered in viewer
* fixes: version manager ui for released versions
* fixes: tabs default children saving
* fixes: app resource mapping for parent-child components
* fixes: duplicate pages
* fixes: page load events for viewer
* fixes: enable and disable pages
* fixes: hide and show pages
* fixes: on maintaince toggle button
* fixes: new version child components are not tied to its parent
* fixes: redo breaks- on deleting a component and undo then redo (editor)
* new export schema and handling apps impport with new and older schemas
* table events: column and actions events
* fixes: query confirmations popup
* fixes: copy/paste
* fixes: cut/paste
* fixes: event mapping for newer versions for new components, pages and queries id
* fixes: app resource mapping for imported apps
* fixes: cascade events for table actions and colulmns
* Migrates the existing JSON-based app definition schema to a structured table-based architecture. This enhancement introduces component and page-specific permissions, improves data organization, and enables fine-grained access control. Additionally, it adds the 'globalSettings' column to the 'appVersion' table.
* cleanup
* fixes: enable and disable pages
* fixes: hide/show page and set saving state for cloning pages
* cleanup
* fixes: page disable menu
* fixes: migrations for data query events
* fixes: switching app version from version creation modal results in editor loading state
* fixes: setting up the page title
* fixes: Page duplication has same page handler name.
* fixes: updating general styles of a component
* fixes: delete component should trigger confirmations box for one widget and for multiple should process deletion
* fixes: CSA for button(component) does not work for page event handler.
* fixes: component name update [calendar]
* fixes: Duplicating pages do not create child components
* improves copy-paste mechanism of widgets
* fix: calendar subcontainer components comes out of the parent container on copy/paste
* fix:Form properties, no option for selecting submit button.
* fixes: Dark mode issue with event handler.
* fixes: display preferences for components
* fixes:have to select the selected version again to create a new
* fixes: Pages menu is not getting disabled when enabled and vice-versa
* fixes: correct naming of duplicating pages
* fixes: 2 action button even with no event attached to one, it gets attached to both.
* fixes: event deletion for action btn removal
* fixes: Keyboard action to move component is not saving
* reduce outbound calls when widget re-positioned with keyboard
* fixes: Not able to delete component from Inspector
* fixes: cloning of widgets
* fixes: Request confirmation before query run toggle is not visible on viewer mode. (can't run query if confirmation toggle is on)
* fixes: event sorting
* fixes: events mapping for versioning: queries and components
* fixes: importing app bug - query running issue when importing apps
* [appdef-2.0] fixes: event action linking for imported apps (#7627)
* fixes: event action linking for imported apps
* cleanup
* fixes: Toggling display preferences is not saving for components. (#7629)
* fixes: dnd issue for mobile view (#7632)
* default page menu settings should be true
* [appdef-2] event manager selector bug (#7631)
* fixes: on selecting query - 3 outbound calls are done to the server, and event manager re-renders 3times resulting in flikering ui
* reduces outbound calls for updating csa actions to 1
* [appdef] - copy associated events for cloned components (#7634)
* fixes: Copying component is not coping the events associated with the component.
* cleanup
* [appdef-2] : Fixes frontend issues (#7636)
* Fix UI issues
* Fix Scrollbar is not available after we pin the inspector.
* Fix button jumping places if switched from extended monitor to laptop.
* Fix white background around canvas
* fixes: Component inspector go blank after switching to different pages after dropping components (#7637)
* fixes: general properties of widgets are not getting saved (#7638)
* fixes: selecting the components via selecto (#7653)
* fixes: multiple undo-redo simlut. (#7656)
* fixes: copy associated events for cloned queries (#7657)
* Fixes not able toggle of Listview pagination toggle (#7701)
* Fix UI issues
* Fix Scrollbar is not available after we pin the inspector.
* Fix button jumping places if switched from extended monitor to laptop.
* fix enable pagination not getting toggled in listview
* Fix form children not being displayed
* fixes: dnd fix for widgets dropped inside subcontainer (#7691)
* [Appdef-2] copy-paste, cut and clone fix for widgets (#7687)
* fixes: copy/cut/paste and cloning of widgets
* cleanup
* can copy/paste-clone in listview
* fixes: on mulit-widget selected via mouse area selection: widget manager should be rendered (#7688)
* fixes: on deleting tabs widgets should delete its children (#7692)
* fixes: column data generated from restapi does not render correct columns in viewer (#7695)
* [appdef-2] fixes: multiple query confirmations trigger (#7704)
* fixes: multiple query confirmations trigger
* fixes: multiple outbound calls in the inital load, run queries on app load with confirmations:editor&viewer
* fixes: correct confirmations list to the stote
* [appdef-2] fixes:Event handler are running twice for page load (#7705)
* fixes:Event handler are running twice for page load(eg- add 2 show alert and change the page).
* fixes: for viewer page events
* fixes: container widget is not getting saved on drop (#7718)
* fixes: Create app version from is empty if we delete another version. (#7720)
* [appdef-2] fixes: on versioned app (switching or creating) version, the componet layout is wrongly updated to the container dnd (#7721)
* fixes: on versioned app (switching or creating) version, the component layout is wrongly updated to the container dnd
* fixes: container widget is not saving
* fixes: triggering confirmation box for every query with on load trigger (#7728)
* Fixes canvas background and go to app crashing (#7725)
* Fix UI issues
* Fix Scrollbar is not available after we pin the inspector.
* Fix button jumping places if switched from extended monitor to laptop.
* fix enable pagination not getting toggled in listview
* Fix form children not being displayed
* Fix Go to app is crashing the application.
* Fix fx for canvas background color is not working.
* fixes: cloned/copied table with actions (#7758)
* fixes: calendar and form widgets (#7735)
* fixes: rendering of components in viewer for mobile (#7759)
* fixes: toggling, resizing, dropping widgets in both display preferences (#7760)
* fixes: page switch action via runjs actions (#7762)
* fixes: component validations do not get saved (#7766)
* [appdef-2] subcontainer dnd height outbound fix (#7767)
* fixes: listview children can be dragged outside its outbound limit
* cleanup
* fixes: widget inspector going to empty component (#7768)
* fixes: goToApp not running from runjs in viewer mode (#7770)
* fixes: multi-components cloning or copy/paste have same name (#7761)
* Fix disabled page is being displayed on switch page event dropdown (#7769)
* Fix kanban rendering leading to infinite look
* Fix disabled page is being displayed on switch page event dropdown
* Fix Kanban widget getting into infinite loop (#7808)
* Fix kanban rendering leading to infinite look
* Fix disabled page is being displayed on switch page event dropdown
* Fix kanban getting into infinite loop
* adds support of constants to current state of the ediotr (#7821)
* removes loader added for testing (#7822)
* [appdef] fixes - dnd container cloning edge cases (#7820)
* fixes: copy/pasting components updating wrong display preferences
* fixes: copy/pasting tabs and cloning components inside tabs
* fixes: duplication of calendar component bug
* if components in subcontainer(children) are selected via selecto along with its parent, children should not be going through duplication
* if components in subcontainer(children) are selected via selecto along with its parent, children should not be going through duplication
* fixes: Resolving App Version and Timestamp Update Challenges (#7863)
* Fixes query confirmation issue on viewer (#7862)
* [appdef ]fixes: components copied from template app to a new page or app do not render in canvas (#7867)
* fixes: components copied from template app to a new page or app does not render in canvas
* fixes: table crash on coping from other pages with columns
* adds the column exists check
* fixes: tables crash for imported apps with auto generated cols
* appdefinition refactor/cleanup (#7872)
* cleanup controllers and request calls from frontend
* removing unwanted console logs and unused variables
* revering v1 apis og
* adding length validation for page dto
* adding dtos for components
* updated dtos for components and pages
* added dto for event handlers
* fixes event handler dto
* fixes: page dto
* adds/fixes event handlers creating dtp
* fixes: event handler service and dtos
* [appdef] fixes: Creating page not changing the slug (#7873)
* fixes: Creating page not changing the slug
* removes extra whitespace
* [appdef] fixes: on importing a exported app child components are not present in the parent component (#7864)
* fixes: on importing a exported app child components are not present in the parent component
* handles parent component mapping for tabs and calendar component
* handles parent component mapping for tabs and calendar component for new versions
* [appdef] api endpoint fixes (#7888)
* fixes: moved fetching app version to v2 api
* fixes: app slug api
* Fixes CurrentUser & Mode not present in globals in inspector (#7812)
* Fix current user not being present in inspector
* Add Mode in globas in inspector
* Fix creating page not changing the slug.
* Revert "Fix creating page not changing the slug."
This reverts commit 0ff9c18ab8b622a0fa96f6d7b200898c19b060f4.
* Fixes on adding query params in event handler, breaking the app (#7889)
* Fix on version change if left sidebar is open canvas not scrolling right
* Fix on adding query params in event handler, breaking the app
* Fix
* Fix on version change if left sidebar is open canvas not scrolling right (#7884)
* fixes: fixes on on app load switch page action via run queires (#7858)
* fixes: fixes on on app load switch page action via run queires
* Fix
* refactor
* Fix on load event not appearing on viewer
---------
Co-authored-by: Nakul Nagargade <nakul@tooljet.com>
* [appdef] fixes: event actions mapping for import-export (#7895)
* fixes: event actions mapping for import-export
* fixes: updates organisation id
* fixes: templates event mapping
* do not app again for not normalized apps
* [appdef]migrations fix (#7910)
* fixes: page attributes
* fixes: table action and column events for imported apps (prev) and app migrations
* adds processDataInBatches
* fixes: app data migrations
* create a new queryBuilder instance for each batch to ensure that there's no interference between batches
* fix: app migration
* cleanup
* cleanup
* fixes: table column data not updated on boxes changes in container (#7919)
* fixes: creating all pages from all versions (#7905)
* Fix state not changing in chart (#7900)
* Fix in chart, toggles are not working
* Update Chart.jsx
---------
Co-authored-by: Arpit <arpitnath42@gmail.com>
* fix event param not updating (#7902)
* [appdef] Pages attributes are missing on versioning or imported app (#7904)
* fixes: on creating new version pages attributes are not copied
* fixes: on importing apps with pages attributes are not copied
* fixes: component double duplication issues
* fixes: deleting children components via selecto (#7915)
* fixes: component deletion fixes
* fixes: cloning components to a new version should also create associated events
* fixes: creating components on cloning with general styles or properties
* fixes: creatinng general properties on version
* fixes: imported app
* fixes added to app migrations
* fixes: mobile view
* fixes: Created a new version with multiple pages from second page, the new version shows the homepage with second page URL
* fixes: table crash due to columnDeletionHistory saved as an object instead of an array
* fixes: on creating new version, data_queries should be created (#7975)
* [appdef] fixes: migrations (#7951)
* refactor migrations with batching
* event actions: switch page should be mapped to correct new page id
* fixes: importing json-schema app with multiple version: same components do not get render in the canvas
* fixes: import/export of legecy apps
* event actions mapping to correct page ids: migrations
* fixes: migrations children not rendered in subcontainer components
* adapts to main/viewer changes
* fixes: viewer with #6698
* fixes: viewer route
* fixes: page switch via validateRoutes
* fixes: on delete version fetchApp fails
* handle error on saving changes
* skip name opts
* typo fix
* Instead of relying on the schema, we choose to use the Tooljet version as the determining factor for decoupling import flows
* fixes: slug updates from global settings
* fixes: slug app link (#8008)
* fixes: on version changed the preview link should also update (#8009)
* fixes: on cut and paste events should not cascade (#8010)
* fixes: query options to new mapped ids
* [appdef] fixes: cloning apps (#8012)
* fixes: cloning apps
* fixes: slug status from share modal
* fixes: query confirmations list on viewer (#8017)
* undo-fix
* fixes: updates current state with page data on creating new page
* Fix failing specs (#8031)
* [appdef] fixes : ghost child components are being created on imported/cloned apps and while migrating (#8026)
* fixes: ignore ghost components while importing
* added the fix in migrations
* fixes: adding other components
* fixes: table column resizes
* updates layout dto
* update component dto
* fixes: tabs children are not rendered as the are not in their repsective parent container (#8036)
* moving editorFunc to Editor.jsx
* cleanup
* fixes: e2e test for clone
* cleanup
* fixes: toggle maintaince
* bumping version
* multi-edit: ymap-fix-1
* Revert "multi-edit: ymap-fix-1"
This reverts commit 8b799c3c51bc45179d2ad4ef405d6a234083d475.
* [appdef] fixes: viewer route: keeps on reloading for private apps (#8051)
* fixes: viewer route: keeps on reloading for pribate apps
* should return the response
* test: ymap updates-1
* fixes: v1 apps with dq queries resuts in app crash
* Updated import spec
* Revert "Updated import spec"
This reverts commit 802136cdc3f06ee6debe3612999593a872b65bb1.
* Fixed failed platform test cases for app desinition re-design (#8053)
* Fix failed platform test cases
* Modify user permission test cases
* fixes: trial-5: fixing vanishing of components
* Revert "fixes: trial-5: fixing vanishing of components"
This reverts commit a22aec12c789d5bd1c9c1e9cea7d9fb1eef87bfb.
* fixes: trail-6: fix
* fixes: trail-7: fix
* Revert "fixes: trail-7: fix"
This reverts commit 08f373c415b9f1599eff9e397f7c4ffbc3f364b8.
* Revert "fixes: trail-6: fix"
This reverts commit c4e19b5d05c94d8c1d5a6ad37263bcec7dcdccb1.
* multi-edit: ymap-fix
* Revert "multi-edit: ymap-fix"
This reverts commit 92f49c0cde33818c9a85478f8dfc3b59a629c3d7.
* fixes: multi-user updates: adding or removing
* event handlers sycned for multi-user
* should take slug instead of appid if slug is present
* updating adding ymap logic
* versioning with multi-user
* fixes: saving issue
* dont skip ymap
* adds delay to ymap
* ymap-update-order-fixed
* ymap-update-order-fixed-1.1
* ymap-update-order-fixed-1.2
* test=fix
* Updated import spec (#8061)
* cleanup
* lint fixed
* fixes: cloning apps with tabs
* veiwer on event should return
* fixes: event should map with show/hide modal component id
* Fix failing appbuilder specs (#8117)
* cherrypicked ee/00195c064
* bumping version to v2.24.0
* fixed modal actionid typo
* fixes: slugs issues for released an public apps (#8119)
* Fix failed test cases (#8121)
* reverting global slug input
* fixes: versioning with cloned page and ghost components (#8122)
---------
Co-authored-by: Nakul Nagargade <133095394+nakulnagargade@users.noreply.github.com>
Co-authored-by: Kavin Venkatachalam <50441969+kavinvenkatachalam@users.noreply.github.com>
Co-authored-by: Nakul Nagargade <nakul@tooljet.com>
Co-authored-by: Midhun Kumar E <midhun752@gmail.com>
Co-authored-by: nandinisaha13 <nandinisaha13@gmail.com>
Co-authored-by: Mekhla Asopa <dadhichmekhla@gmail.com>
Co-authored-by: Ajith KV <ajith.jaban@gmail.com>
Co-authored-by: Mekhla Asopa <59684099+Mekhla-Asopa@users.noreply.github.com>
2023-11-08 05:39:47 +00:00
|
|
|
}, [JSON.stringify({ currentState, _currentState })]);
|
2021-05-09 03:20:26 +00:00
|
|
|
|
2022-06-02 07:27:20 +00:00
|
|
|
useEffect(() => {
|
|
|
|
|
const handleClickOutside = (event) => {
|
|
|
|
|
if (isOpen) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (wrapperRef.current && isFocused && !wrapperRef.current.contains(event.target) && prevCountRef.current) {
|
|
|
|
|
isPreviewFocused.current = false;
|
|
|
|
|
setFocused(false);
|
|
|
|
|
prevCountRef.current = false;
|
|
|
|
|
} else if (isFocused) {
|
|
|
|
|
prevCountRef.current = true;
|
|
|
|
|
} else if (!isFocused && prevCountRef.current) prevCountRef.current = false;
|
|
|
|
|
};
|
|
|
|
|
document.addEventListener('mousedown', handleClickOutside);
|
|
|
|
|
return () => {
|
|
|
|
|
document.removeEventListener('mousedown', handleClickOutside);
|
|
|
|
|
};
|
|
|
|
|
}, [wrapperRef, isFocused, isPreviewFocused, currentValue, prevCountRef, isOpen]);
|
|
|
|
|
|
2023-08-31 08:10:04 +00:00
|
|
|
useEffect(() => {
|
Release : Appbuilder - appdefinition architecture revamp (#7448)
* importing service: updated
* import service, categorize and update events with associations
* fix: deleting events associated with pages on page delete
* handle app version: creation, updates, switching versions from app builder
* on version switch: no updates should be triggeted to server
* versioning for query events
* fixes: new components db transaction fails for newly created pages
* fixes: query chaining with events
* map older query ids to new for event action: run query
* fixes: multi-editor support
* fixes/multi-editor: users should be able to edit different version of the app at real time without sync
* minor fixes
* fixes: undo/redo savings with latest app def updates
* fixes: execution of page switch action
* fixes: csa events
* fixes: csa selection dropdown
* fixes: on csa action changed, the action params should also be updated correctly
* fixes: event rendering actions
* fixes: table event - row hovered
* fixes: table event - on search
* fixes: table event - onNewRowsAdded
* fixes: table event - onBulkUpdate
* fixes: table column updates
* fixes: table column updates to component definition
* re-order events
* handle adding widgets to sub containers
* fixes: csa for modals
* fixes: deletes children components on deleting parent
* fixes: components with default children
* fixed events for imported app
* gs- crash fix
* fixes: global settings UI
* fixes: header and user
* fixes: page switch event
* fixes: adapts to new event manager ui
* import app
* add event index for creating app versions
* fixes: table rendering on viewer
* fixes: event execution for viewer
* fixes: loading app with slug
* fixes: Page side bar is not rendered in viewer
* fixes: version manager ui for released versions
* fixes: tabs default children saving
* fixes: app resource mapping for parent-child components
* fixes: duplicate pages
* fixes: page load events for viewer
* fixes: enable and disable pages
* fixes: hide and show pages
* fixes: on maintaince toggle button
* fixes: new version child components are not tied to its parent
* fixes: redo breaks- on deleting a component and undo then redo (editor)
* new export schema and handling apps impport with new and older schemas
* table events: column and actions events
* fixes: query confirmations popup
* fixes: copy/paste
* fixes: cut/paste
* fixes: event mapping for newer versions for new components, pages and queries id
* fixes: app resource mapping for imported apps
* fixes: cascade events for table actions and colulmns
* Migrates the existing JSON-based app definition schema to a structured table-based architecture. This enhancement introduces component and page-specific permissions, improves data organization, and enables fine-grained access control. Additionally, it adds the 'globalSettings' column to the 'appVersion' table.
* cleanup
* fixes: enable and disable pages
* fixes: hide/show page and set saving state for cloning pages
* cleanup
* fixes: page disable menu
* fixes: migrations for data query events
* fixes: switching app version from version creation modal results in editor loading state
* fixes: setting up the page title
* fixes: Page duplication has same page handler name.
* fixes: updating general styles of a component
* fixes: delete component should trigger confirmations box for one widget and for multiple should process deletion
* fixes: CSA for button(component) does not work for page event handler.
* fixes: component name update [calendar]
* fixes: Duplicating pages do not create child components
* improves copy-paste mechanism of widgets
* fix: calendar subcontainer components comes out of the parent container on copy/paste
* fix:Form properties, no option for selecting submit button.
* fixes: Dark mode issue with event handler.
* fixes: display preferences for components
* fixes:have to select the selected version again to create a new
* fixes: Pages menu is not getting disabled when enabled and vice-versa
* fixes: correct naming of duplicating pages
* fixes: 2 action button even with no event attached to one, it gets attached to both.
* fixes: event deletion for action btn removal
* fixes: Keyboard action to move component is not saving
* reduce outbound calls when widget re-positioned with keyboard
* fixes: Not able to delete component from Inspector
* fixes: cloning of widgets
* fixes: Request confirmation before query run toggle is not visible on viewer mode. (can't run query if confirmation toggle is on)
* fixes: event sorting
* fixes: events mapping for versioning: queries and components
* fixes: importing app bug - query running issue when importing apps
* [appdef-2.0] fixes: event action linking for imported apps (#7627)
* fixes: event action linking for imported apps
* cleanup
* fixes: Toggling display preferences is not saving for components. (#7629)
* fixes: dnd issue for mobile view (#7632)
* default page menu settings should be true
* [appdef-2] event manager selector bug (#7631)
* fixes: on selecting query - 3 outbound calls are done to the server, and event manager re-renders 3times resulting in flikering ui
* reduces outbound calls for updating csa actions to 1
* [appdef] - copy associated events for cloned components (#7634)
* fixes: Copying component is not coping the events associated with the component.
* cleanup
* [appdef-2] : Fixes frontend issues (#7636)
* Fix UI issues
* Fix Scrollbar is not available after we pin the inspector.
* Fix button jumping places if switched from extended monitor to laptop.
* Fix white background around canvas
* fixes: Component inspector go blank after switching to different pages after dropping components (#7637)
* fixes: general properties of widgets are not getting saved (#7638)
* fixes: selecting the components via selecto (#7653)
* fixes: multiple undo-redo simlut. (#7656)
* fixes: copy associated events for cloned queries (#7657)
* Fixes not able toggle of Listview pagination toggle (#7701)
* Fix UI issues
* Fix Scrollbar is not available after we pin the inspector.
* Fix button jumping places if switched from extended monitor to laptop.
* fix enable pagination not getting toggled in listview
* Fix form children not being displayed
* fixes: dnd fix for widgets dropped inside subcontainer (#7691)
* [Appdef-2] copy-paste, cut and clone fix for widgets (#7687)
* fixes: copy/cut/paste and cloning of widgets
* cleanup
* can copy/paste-clone in listview
* fixes: on mulit-widget selected via mouse area selection: widget manager should be rendered (#7688)
* fixes: on deleting tabs widgets should delete its children (#7692)
* fixes: column data generated from restapi does not render correct columns in viewer (#7695)
* [appdef-2] fixes: multiple query confirmations trigger (#7704)
* fixes: multiple query confirmations trigger
* fixes: multiple outbound calls in the inital load, run queries on app load with confirmations:editor&viewer
* fixes: correct confirmations list to the stote
* [appdef-2] fixes:Event handler are running twice for page load (#7705)
* fixes:Event handler are running twice for page load(eg- add 2 show alert and change the page).
* fixes: for viewer page events
* fixes: container widget is not getting saved on drop (#7718)
* fixes: Create app version from is empty if we delete another version. (#7720)
* [appdef-2] fixes: on versioned app (switching or creating) version, the componet layout is wrongly updated to the container dnd (#7721)
* fixes: on versioned app (switching or creating) version, the component layout is wrongly updated to the container dnd
* fixes: container widget is not saving
* fixes: triggering confirmation box for every query with on load trigger (#7728)
* Fixes canvas background and go to app crashing (#7725)
* Fix UI issues
* Fix Scrollbar is not available after we pin the inspector.
* Fix button jumping places if switched from extended monitor to laptop.
* fix enable pagination not getting toggled in listview
* Fix form children not being displayed
* Fix Go to app is crashing the application.
* Fix fx for canvas background color is not working.
* fixes: cloned/copied table with actions (#7758)
* fixes: calendar and form widgets (#7735)
* fixes: rendering of components in viewer for mobile (#7759)
* fixes: toggling, resizing, dropping widgets in both display preferences (#7760)
* fixes: page switch action via runjs actions (#7762)
* fixes: component validations do not get saved (#7766)
* [appdef-2] subcontainer dnd height outbound fix (#7767)
* fixes: listview children can be dragged outside its outbound limit
* cleanup
* fixes: widget inspector going to empty component (#7768)
* fixes: goToApp not running from runjs in viewer mode (#7770)
* fixes: multi-components cloning or copy/paste have same name (#7761)
* Fix disabled page is being displayed on switch page event dropdown (#7769)
* Fix kanban rendering leading to infinite look
* Fix disabled page is being displayed on switch page event dropdown
* Fix Kanban widget getting into infinite loop (#7808)
* Fix kanban rendering leading to infinite look
* Fix disabled page is being displayed on switch page event dropdown
* Fix kanban getting into infinite loop
* adds support of constants to current state of the ediotr (#7821)
* removes loader added for testing (#7822)
* [appdef] fixes - dnd container cloning edge cases (#7820)
* fixes: copy/pasting components updating wrong display preferences
* fixes: copy/pasting tabs and cloning components inside tabs
* fixes: duplication of calendar component bug
* if components in subcontainer(children) are selected via selecto along with its parent, children should not be going through duplication
* if components in subcontainer(children) are selected via selecto along with its parent, children should not be going through duplication
* fixes: Resolving App Version and Timestamp Update Challenges (#7863)
* Fixes query confirmation issue on viewer (#7862)
* [appdef ]fixes: components copied from template app to a new page or app do not render in canvas (#7867)
* fixes: components copied from template app to a new page or app does not render in canvas
* fixes: table crash on coping from other pages with columns
* adds the column exists check
* fixes: tables crash for imported apps with auto generated cols
* appdefinition refactor/cleanup (#7872)
* cleanup controllers and request calls from frontend
* removing unwanted console logs and unused variables
* revering v1 apis og
* adding length validation for page dto
* adding dtos for components
* updated dtos for components and pages
* added dto for event handlers
* fixes event handler dto
* fixes: page dto
* adds/fixes event handlers creating dtp
* fixes: event handler service and dtos
* [appdef] fixes: Creating page not changing the slug (#7873)
* fixes: Creating page not changing the slug
* removes extra whitespace
* [appdef] fixes: on importing a exported app child components are not present in the parent component (#7864)
* fixes: on importing a exported app child components are not present in the parent component
* handles parent component mapping for tabs and calendar component
* handles parent component mapping for tabs and calendar component for new versions
* [appdef] api endpoint fixes (#7888)
* fixes: moved fetching app version to v2 api
* fixes: app slug api
* Fixes CurrentUser & Mode not present in globals in inspector (#7812)
* Fix current user not being present in inspector
* Add Mode in globas in inspector
* Fix creating page not changing the slug.
* Revert "Fix creating page not changing the slug."
This reverts commit 0ff9c18ab8b622a0fa96f6d7b200898c19b060f4.
* Fixes on adding query params in event handler, breaking the app (#7889)
* Fix on version change if left sidebar is open canvas not scrolling right
* Fix on adding query params in event handler, breaking the app
* Fix
* Fix on version change if left sidebar is open canvas not scrolling right (#7884)
* fixes: fixes on on app load switch page action via run queires (#7858)
* fixes: fixes on on app load switch page action via run queires
* Fix
* refactor
* Fix on load event not appearing on viewer
---------
Co-authored-by: Nakul Nagargade <nakul@tooljet.com>
* [appdef] fixes: event actions mapping for import-export (#7895)
* fixes: event actions mapping for import-export
* fixes: updates organisation id
* fixes: templates event mapping
* do not app again for not normalized apps
* [appdef]migrations fix (#7910)
* fixes: page attributes
* fixes: table action and column events for imported apps (prev) and app migrations
* adds processDataInBatches
* fixes: app data migrations
* create a new queryBuilder instance for each batch to ensure that there's no interference between batches
* fix: app migration
* cleanup
* cleanup
* fixes: table column data not updated on boxes changes in container (#7919)
* fixes: creating all pages from all versions (#7905)
* Fix state not changing in chart (#7900)
* Fix in chart, toggles are not working
* Update Chart.jsx
---------
Co-authored-by: Arpit <arpitnath42@gmail.com>
* fix event param not updating (#7902)
* [appdef] Pages attributes are missing on versioning or imported app (#7904)
* fixes: on creating new version pages attributes are not copied
* fixes: on importing apps with pages attributes are not copied
* fixes: component double duplication issues
* fixes: deleting children components via selecto (#7915)
* fixes: component deletion fixes
* fixes: cloning components to a new version should also create associated events
* fixes: creating components on cloning with general styles or properties
* fixes: creatinng general properties on version
* fixes: imported app
* fixes added to app migrations
* fixes: mobile view
* fixes: Created a new version with multiple pages from second page, the new version shows the homepage with second page URL
* fixes: table crash due to columnDeletionHistory saved as an object instead of an array
* fixes: on creating new version, data_queries should be created (#7975)
* [appdef] fixes: migrations (#7951)
* refactor migrations with batching
* event actions: switch page should be mapped to correct new page id
* fixes: importing json-schema app with multiple version: same components do not get render in the canvas
* fixes: import/export of legecy apps
* event actions mapping to correct page ids: migrations
* fixes: migrations children not rendered in subcontainer components
* adapts to main/viewer changes
* fixes: viewer with #6698
* fixes: viewer route
* fixes: page switch via validateRoutes
* fixes: on delete version fetchApp fails
* handle error on saving changes
* skip name opts
* typo fix
* Instead of relying on the schema, we choose to use the Tooljet version as the determining factor for decoupling import flows
* fixes: slug updates from global settings
* fixes: slug app link (#8008)
* fixes: on version changed the preview link should also update (#8009)
* fixes: on cut and paste events should not cascade (#8010)
* fixes: query options to new mapped ids
* [appdef] fixes: cloning apps (#8012)
* fixes: cloning apps
* fixes: slug status from share modal
* fixes: query confirmations list on viewer (#8017)
* undo-fix
* fixes: updates current state with page data on creating new page
* Fix failing specs (#8031)
* [appdef] fixes : ghost child components are being created on imported/cloned apps and while migrating (#8026)
* fixes: ignore ghost components while importing
* added the fix in migrations
* fixes: adding other components
* fixes: table column resizes
* updates layout dto
* update component dto
* fixes: tabs children are not rendered as the are not in their repsective parent container (#8036)
* moving editorFunc to Editor.jsx
* cleanup
* fixes: e2e test for clone
* cleanup
* fixes: toggle maintaince
* bumping version
* multi-edit: ymap-fix-1
* Revert "multi-edit: ymap-fix-1"
This reverts commit 8b799c3c51bc45179d2ad4ef405d6a234083d475.
* [appdef] fixes: viewer route: keeps on reloading for private apps (#8051)
* fixes: viewer route: keeps on reloading for pribate apps
* should return the response
* test: ymap updates-1
* fixes: v1 apps with dq queries resuts in app crash
* Updated import spec
* Revert "Updated import spec"
This reverts commit 802136cdc3f06ee6debe3612999593a872b65bb1.
* Fixed failed platform test cases for app desinition re-design (#8053)
* Fix failed platform test cases
* Modify user permission test cases
* fixes: trial-5: fixing vanishing of components
* Revert "fixes: trial-5: fixing vanishing of components"
This reverts commit a22aec12c789d5bd1c9c1e9cea7d9fb1eef87bfb.
* fixes: trail-6: fix
* fixes: trail-7: fix
* Revert "fixes: trail-7: fix"
This reverts commit 08f373c415b9f1599eff9e397f7c4ffbc3f364b8.
* Revert "fixes: trail-6: fix"
This reverts commit c4e19b5d05c94d8c1d5a6ad37263bcec7dcdccb1.
* multi-edit: ymap-fix
* Revert "multi-edit: ymap-fix"
This reverts commit 92f49c0cde33818c9a85478f8dfc3b59a629c3d7.
* fixes: multi-user updates: adding or removing
* event handlers sycned for multi-user
* should take slug instead of appid if slug is present
* updating adding ymap logic
* versioning with multi-user
* fixes: saving issue
* dont skip ymap
* adds delay to ymap
* ymap-update-order-fixed
* ymap-update-order-fixed-1.1
* ymap-update-order-fixed-1.2
* test=fix
* Updated import spec (#8061)
* cleanup
* lint fixed
* fixes: cloning apps with tabs
* veiwer on event should return
* fixes: event should map with show/hide modal component id
* Fix failing appbuilder specs (#8117)
* cherrypicked ee/00195c064
* bumping version to v2.24.0
* fixed modal actionid typo
* fixes: slugs issues for released an public apps (#8119)
* Fix failed test cases (#8121)
* reverting global slug input
* fixes: versioning with cloned page and ghost components (#8122)
---------
Co-authored-by: Nakul Nagargade <133095394+nakulnagargade@users.noreply.github.com>
Co-authored-by: Kavin Venkatachalam <50441969+kavinvenkatachalam@users.noreply.github.com>
Co-authored-by: Nakul Nagargade <nakul@tooljet.com>
Co-authored-by: Midhun Kumar E <midhun752@gmail.com>
Co-authored-by: nandinisaha13 <nandinisaha13@gmail.com>
Co-authored-by: Mekhla Asopa <dadhichmekhla@gmail.com>
Co-authored-by: Ajith KV <ajith.jaban@gmail.com>
Co-authored-by: Mekhla Asopa <59684099+Mekhla-Asopa@users.noreply.github.com>
2023-11-08 05:39:47 +00:00
|
|
|
if (enablePreview && isFocused && JSON.stringify(currentValue) !== JSON.stringify(prevCurrentValue)) {
|
2023-08-31 08:10:04 +00:00
|
|
|
const customResolvables = getCustomResolvables();
|
|
|
|
|
const [preview, error] = resolveReferences(currentValue, realState, null, customResolvables, true, true);
|
|
|
|
|
setPrevCurrentValue(currentValue);
|
|
|
|
|
|
|
|
|
|
if (error) {
|
|
|
|
|
setResolvingError(error);
|
|
|
|
|
setResolvedValue(null);
|
|
|
|
|
} else {
|
|
|
|
|
setResolvingError(null);
|
|
|
|
|
setResolvedValue(preview);
|
|
|
|
|
}
|
|
|
|
|
}
|
Release : Appbuilder - appdefinition architecture revamp (#7448)
* importing service: updated
* import service, categorize and update events with associations
* fix: deleting events associated with pages on page delete
* handle app version: creation, updates, switching versions from app builder
* on version switch: no updates should be triggeted to server
* versioning for query events
* fixes: new components db transaction fails for newly created pages
* fixes: query chaining with events
* map older query ids to new for event action: run query
* fixes: multi-editor support
* fixes/multi-editor: users should be able to edit different version of the app at real time without sync
* minor fixes
* fixes: undo/redo savings with latest app def updates
* fixes: execution of page switch action
* fixes: csa events
* fixes: csa selection dropdown
* fixes: on csa action changed, the action params should also be updated correctly
* fixes: event rendering actions
* fixes: table event - row hovered
* fixes: table event - on search
* fixes: table event - onNewRowsAdded
* fixes: table event - onBulkUpdate
* fixes: table column updates
* fixes: table column updates to component definition
* re-order events
* handle adding widgets to sub containers
* fixes: csa for modals
* fixes: deletes children components on deleting parent
* fixes: components with default children
* fixed events for imported app
* gs- crash fix
* fixes: global settings UI
* fixes: header and user
* fixes: page switch event
* fixes: adapts to new event manager ui
* import app
* add event index for creating app versions
* fixes: table rendering on viewer
* fixes: event execution for viewer
* fixes: loading app with slug
* fixes: Page side bar is not rendered in viewer
* fixes: version manager ui for released versions
* fixes: tabs default children saving
* fixes: app resource mapping for parent-child components
* fixes: duplicate pages
* fixes: page load events for viewer
* fixes: enable and disable pages
* fixes: hide and show pages
* fixes: on maintaince toggle button
* fixes: new version child components are not tied to its parent
* fixes: redo breaks- on deleting a component and undo then redo (editor)
* new export schema and handling apps impport with new and older schemas
* table events: column and actions events
* fixes: query confirmations popup
* fixes: copy/paste
* fixes: cut/paste
* fixes: event mapping for newer versions for new components, pages and queries id
* fixes: app resource mapping for imported apps
* fixes: cascade events for table actions and colulmns
* Migrates the existing JSON-based app definition schema to a structured table-based architecture. This enhancement introduces component and page-specific permissions, improves data organization, and enables fine-grained access control. Additionally, it adds the 'globalSettings' column to the 'appVersion' table.
* cleanup
* fixes: enable and disable pages
* fixes: hide/show page and set saving state for cloning pages
* cleanup
* fixes: page disable menu
* fixes: migrations for data query events
* fixes: switching app version from version creation modal results in editor loading state
* fixes: setting up the page title
* fixes: Page duplication has same page handler name.
* fixes: updating general styles of a component
* fixes: delete component should trigger confirmations box for one widget and for multiple should process deletion
* fixes: CSA for button(component) does not work for page event handler.
* fixes: component name update [calendar]
* fixes: Duplicating pages do not create child components
* improves copy-paste mechanism of widgets
* fix: calendar subcontainer components comes out of the parent container on copy/paste
* fix:Form properties, no option for selecting submit button.
* fixes: Dark mode issue with event handler.
* fixes: display preferences for components
* fixes:have to select the selected version again to create a new
* fixes: Pages menu is not getting disabled when enabled and vice-versa
* fixes: correct naming of duplicating pages
* fixes: 2 action button even with no event attached to one, it gets attached to both.
* fixes: event deletion for action btn removal
* fixes: Keyboard action to move component is not saving
* reduce outbound calls when widget re-positioned with keyboard
* fixes: Not able to delete component from Inspector
* fixes: cloning of widgets
* fixes: Request confirmation before query run toggle is not visible on viewer mode. (can't run query if confirmation toggle is on)
* fixes: event sorting
* fixes: events mapping for versioning: queries and components
* fixes: importing app bug - query running issue when importing apps
* [appdef-2.0] fixes: event action linking for imported apps (#7627)
* fixes: event action linking for imported apps
* cleanup
* fixes: Toggling display preferences is not saving for components. (#7629)
* fixes: dnd issue for mobile view (#7632)
* default page menu settings should be true
* [appdef-2] event manager selector bug (#7631)
* fixes: on selecting query - 3 outbound calls are done to the server, and event manager re-renders 3times resulting in flikering ui
* reduces outbound calls for updating csa actions to 1
* [appdef] - copy associated events for cloned components (#7634)
* fixes: Copying component is not coping the events associated with the component.
* cleanup
* [appdef-2] : Fixes frontend issues (#7636)
* Fix UI issues
* Fix Scrollbar is not available after we pin the inspector.
* Fix button jumping places if switched from extended monitor to laptop.
* Fix white background around canvas
* fixes: Component inspector go blank after switching to different pages after dropping components (#7637)
* fixes: general properties of widgets are not getting saved (#7638)
* fixes: selecting the components via selecto (#7653)
* fixes: multiple undo-redo simlut. (#7656)
* fixes: copy associated events for cloned queries (#7657)
* Fixes not able toggle of Listview pagination toggle (#7701)
* Fix UI issues
* Fix Scrollbar is not available after we pin the inspector.
* Fix button jumping places if switched from extended monitor to laptop.
* fix enable pagination not getting toggled in listview
* Fix form children not being displayed
* fixes: dnd fix for widgets dropped inside subcontainer (#7691)
* [Appdef-2] copy-paste, cut and clone fix for widgets (#7687)
* fixes: copy/cut/paste and cloning of widgets
* cleanup
* can copy/paste-clone in listview
* fixes: on mulit-widget selected via mouse area selection: widget manager should be rendered (#7688)
* fixes: on deleting tabs widgets should delete its children (#7692)
* fixes: column data generated from restapi does not render correct columns in viewer (#7695)
* [appdef-2] fixes: multiple query confirmations trigger (#7704)
* fixes: multiple query confirmations trigger
* fixes: multiple outbound calls in the inital load, run queries on app load with confirmations:editor&viewer
* fixes: correct confirmations list to the stote
* [appdef-2] fixes:Event handler are running twice for page load (#7705)
* fixes:Event handler are running twice for page load(eg- add 2 show alert and change the page).
* fixes: for viewer page events
* fixes: container widget is not getting saved on drop (#7718)
* fixes: Create app version from is empty if we delete another version. (#7720)
* [appdef-2] fixes: on versioned app (switching or creating) version, the componet layout is wrongly updated to the container dnd (#7721)
* fixes: on versioned app (switching or creating) version, the component layout is wrongly updated to the container dnd
* fixes: container widget is not saving
* fixes: triggering confirmation box for every query with on load trigger (#7728)
* Fixes canvas background and go to app crashing (#7725)
* Fix UI issues
* Fix Scrollbar is not available after we pin the inspector.
* Fix button jumping places if switched from extended monitor to laptop.
* fix enable pagination not getting toggled in listview
* Fix form children not being displayed
* Fix Go to app is crashing the application.
* Fix fx for canvas background color is not working.
* fixes: cloned/copied table with actions (#7758)
* fixes: calendar and form widgets (#7735)
* fixes: rendering of components in viewer for mobile (#7759)
* fixes: toggling, resizing, dropping widgets in both display preferences (#7760)
* fixes: page switch action via runjs actions (#7762)
* fixes: component validations do not get saved (#7766)
* [appdef-2] subcontainer dnd height outbound fix (#7767)
* fixes: listview children can be dragged outside its outbound limit
* cleanup
* fixes: widget inspector going to empty component (#7768)
* fixes: goToApp not running from runjs in viewer mode (#7770)
* fixes: multi-components cloning or copy/paste have same name (#7761)
* Fix disabled page is being displayed on switch page event dropdown (#7769)
* Fix kanban rendering leading to infinite look
* Fix disabled page is being displayed on switch page event dropdown
* Fix Kanban widget getting into infinite loop (#7808)
* Fix kanban rendering leading to infinite look
* Fix disabled page is being displayed on switch page event dropdown
* Fix kanban getting into infinite loop
* adds support of constants to current state of the ediotr (#7821)
* removes loader added for testing (#7822)
* [appdef] fixes - dnd container cloning edge cases (#7820)
* fixes: copy/pasting components updating wrong display preferences
* fixes: copy/pasting tabs and cloning components inside tabs
* fixes: duplication of calendar component bug
* if components in subcontainer(children) are selected via selecto along with its parent, children should not be going through duplication
* if components in subcontainer(children) are selected via selecto along with its parent, children should not be going through duplication
* fixes: Resolving App Version and Timestamp Update Challenges (#7863)
* Fixes query confirmation issue on viewer (#7862)
* [appdef ]fixes: components copied from template app to a new page or app do not render in canvas (#7867)
* fixes: components copied from template app to a new page or app does not render in canvas
* fixes: table crash on coping from other pages with columns
* adds the column exists check
* fixes: tables crash for imported apps with auto generated cols
* appdefinition refactor/cleanup (#7872)
* cleanup controllers and request calls from frontend
* removing unwanted console logs and unused variables
* revering v1 apis og
* adding length validation for page dto
* adding dtos for components
* updated dtos for components and pages
* added dto for event handlers
* fixes event handler dto
* fixes: page dto
* adds/fixes event handlers creating dtp
* fixes: event handler service and dtos
* [appdef] fixes: Creating page not changing the slug (#7873)
* fixes: Creating page not changing the slug
* removes extra whitespace
* [appdef] fixes: on importing a exported app child components are not present in the parent component (#7864)
* fixes: on importing a exported app child components are not present in the parent component
* handles parent component mapping for tabs and calendar component
* handles parent component mapping for tabs and calendar component for new versions
* [appdef] api endpoint fixes (#7888)
* fixes: moved fetching app version to v2 api
* fixes: app slug api
* Fixes CurrentUser & Mode not present in globals in inspector (#7812)
* Fix current user not being present in inspector
* Add Mode in globas in inspector
* Fix creating page not changing the slug.
* Revert "Fix creating page not changing the slug."
This reverts commit 0ff9c18ab8b622a0fa96f6d7b200898c19b060f4.
* Fixes on adding query params in event handler, breaking the app (#7889)
* Fix on version change if left sidebar is open canvas not scrolling right
* Fix on adding query params in event handler, breaking the app
* Fix
* Fix on version change if left sidebar is open canvas not scrolling right (#7884)
* fixes: fixes on on app load switch page action via run queires (#7858)
* fixes: fixes on on app load switch page action via run queires
* Fix
* refactor
* Fix on load event not appearing on viewer
---------
Co-authored-by: Nakul Nagargade <nakul@tooljet.com>
* [appdef] fixes: event actions mapping for import-export (#7895)
* fixes: event actions mapping for import-export
* fixes: updates organisation id
* fixes: templates event mapping
* do not app again for not normalized apps
* [appdef]migrations fix (#7910)
* fixes: page attributes
* fixes: table action and column events for imported apps (prev) and app migrations
* adds processDataInBatches
* fixes: app data migrations
* create a new queryBuilder instance for each batch to ensure that there's no interference between batches
* fix: app migration
* cleanup
* cleanup
* fixes: table column data not updated on boxes changes in container (#7919)
* fixes: creating all pages from all versions (#7905)
* Fix state not changing in chart (#7900)
* Fix in chart, toggles are not working
* Update Chart.jsx
---------
Co-authored-by: Arpit <arpitnath42@gmail.com>
* fix event param not updating (#7902)
* [appdef] Pages attributes are missing on versioning or imported app (#7904)
* fixes: on creating new version pages attributes are not copied
* fixes: on importing apps with pages attributes are not copied
* fixes: component double duplication issues
* fixes: deleting children components via selecto (#7915)
* fixes: component deletion fixes
* fixes: cloning components to a new version should also create associated events
* fixes: creating components on cloning with general styles or properties
* fixes: creatinng general properties on version
* fixes: imported app
* fixes added to app migrations
* fixes: mobile view
* fixes: Created a new version with multiple pages from second page, the new version shows the homepage with second page URL
* fixes: table crash due to columnDeletionHistory saved as an object instead of an array
* fixes: on creating new version, data_queries should be created (#7975)
* [appdef] fixes: migrations (#7951)
* refactor migrations with batching
* event actions: switch page should be mapped to correct new page id
* fixes: importing json-schema app with multiple version: same components do not get render in the canvas
* fixes: import/export of legecy apps
* event actions mapping to correct page ids: migrations
* fixes: migrations children not rendered in subcontainer components
* adapts to main/viewer changes
* fixes: viewer with #6698
* fixes: viewer route
* fixes: page switch via validateRoutes
* fixes: on delete version fetchApp fails
* handle error on saving changes
* skip name opts
* typo fix
* Instead of relying on the schema, we choose to use the Tooljet version as the determining factor for decoupling import flows
* fixes: slug updates from global settings
* fixes: slug app link (#8008)
* fixes: on version changed the preview link should also update (#8009)
* fixes: on cut and paste events should not cascade (#8010)
* fixes: query options to new mapped ids
* [appdef] fixes: cloning apps (#8012)
* fixes: cloning apps
* fixes: slug status from share modal
* fixes: query confirmations list on viewer (#8017)
* undo-fix
* fixes: updates current state with page data on creating new page
* Fix failing specs (#8031)
* [appdef] fixes : ghost child components are being created on imported/cloned apps and while migrating (#8026)
* fixes: ignore ghost components while importing
* added the fix in migrations
* fixes: adding other components
* fixes: table column resizes
* updates layout dto
* update component dto
* fixes: tabs children are not rendered as the are not in their repsective parent container (#8036)
* moving editorFunc to Editor.jsx
* cleanup
* fixes: e2e test for clone
* cleanup
* fixes: toggle maintaince
* bumping version
* multi-edit: ymap-fix-1
* Revert "multi-edit: ymap-fix-1"
This reverts commit 8b799c3c51bc45179d2ad4ef405d6a234083d475.
* [appdef] fixes: viewer route: keeps on reloading for private apps (#8051)
* fixes: viewer route: keeps on reloading for pribate apps
* should return the response
* test: ymap updates-1
* fixes: v1 apps with dq queries resuts in app crash
* Updated import spec
* Revert "Updated import spec"
This reverts commit 802136cdc3f06ee6debe3612999593a872b65bb1.
* Fixed failed platform test cases for app desinition re-design (#8053)
* Fix failed platform test cases
* Modify user permission test cases
* fixes: trial-5: fixing vanishing of components
* Revert "fixes: trial-5: fixing vanishing of components"
This reverts commit a22aec12c789d5bd1c9c1e9cea7d9fb1eef87bfb.
* fixes: trail-6: fix
* fixes: trail-7: fix
* Revert "fixes: trail-7: fix"
This reverts commit 08f373c415b9f1599eff9e397f7c4ffbc3f364b8.
* Revert "fixes: trail-6: fix"
This reverts commit c4e19b5d05c94d8c1d5a6ad37263bcec7dcdccb1.
* multi-edit: ymap-fix
* Revert "multi-edit: ymap-fix"
This reverts commit 92f49c0cde33818c9a85478f8dfc3b59a629c3d7.
* fixes: multi-user updates: adding or removing
* event handlers sycned for multi-user
* should take slug instead of appid if slug is present
* updating adding ymap logic
* versioning with multi-user
* fixes: saving issue
* dont skip ymap
* adds delay to ymap
* ymap-update-order-fixed
* ymap-update-order-fixed-1.1
* ymap-update-order-fixed-1.2
* test=fix
* Updated import spec (#8061)
* cleanup
* lint fixed
* fixes: cloning apps with tabs
* veiwer on event should return
* fixes: event should map with show/hide modal component id
* Fix failing appbuilder specs (#8117)
* cherrypicked ee/00195c064
* bumping version to v2.24.0
* fixed modal actionid typo
* fixes: slugs issues for released an public apps (#8119)
* Fix failed test cases (#8121)
* reverting global slug input
* fixes: versioning with cloned page and ghost components (#8122)
---------
Co-authored-by: Nakul Nagargade <133095394+nakulnagargade@users.noreply.github.com>
Co-authored-by: Kavin Venkatachalam <50441969+kavinvenkatachalam@users.noreply.github.com>
Co-authored-by: Nakul Nagargade <nakul@tooljet.com>
Co-authored-by: Midhun Kumar E <midhun752@gmail.com>
Co-authored-by: nandinisaha13 <nandinisaha13@gmail.com>
Co-authored-by: Mekhla Asopa <dadhichmekhla@gmail.com>
Co-authored-by: Ajith KV <ajith.jaban@gmail.com>
Co-authored-by: Mekhla Asopa <59684099+Mekhla-Asopa@users.noreply.github.com>
2023-11-08 05:39:47 +00:00
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
|
|
|
}, [JSON.stringify({ currentValue, realState, isFocused })]);
|
2023-08-31 08:10:04 +00:00
|
|
|
|
2022-07-11 10:30:18 +00:00
|
|
|
function valueChanged(editor, onChange, ignoreBraces) {
|
2022-10-20 11:47:26 +00:00
|
|
|
if (editor.getValue()?.trim() !== currentValue) {
|
|
|
|
|
handleChange(editor, onChange, ignoreBraces, realState, componentName);
|
|
|
|
|
setCurrentValue(editor.getValue()?.trim());
|
|
|
|
|
}
|
2021-06-26 17:23:00 +00:00
|
|
|
}
|
|
|
|
|
|
2021-09-15 15:40:59 +00:00
|
|
|
const getPreviewContent = (content, type) => {
|
2022-05-20 08:33:43 +00:00
|
|
|
try {
|
|
|
|
|
switch (type) {
|
|
|
|
|
case 'object':
|
|
|
|
|
return JSON.stringify(content);
|
|
|
|
|
case 'boolean':
|
|
|
|
|
return content.toString();
|
|
|
|
|
default:
|
|
|
|
|
return content;
|
|
|
|
|
}
|
|
|
|
|
} catch (e) {
|
|
|
|
|
return undefined;
|
2021-09-15 15:40:59 +00:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2022-06-02 07:27:20 +00:00
|
|
|
const focusPreview = () => (isPreviewFocused.current = true);
|
|
|
|
|
const unFocusPreview = () => (isPreviewFocused.current = false);
|
|
|
|
|
|
|
|
|
|
const copyToClipboard = (text) => {
|
|
|
|
|
navigator.clipboard.writeText(text);
|
|
|
|
|
toast.success('Copied to clipboard');
|
|
|
|
|
};
|
|
|
|
|
|
2022-08-03 13:50:50 +00:00
|
|
|
const getCustomResolvables = () => {
|
|
|
|
|
if (variablesExposedForPreview.hasOwnProperty(component?.id)) {
|
|
|
|
|
if (component?.component?.component === 'Table' && fieldMeta?.name) {
|
|
|
|
|
return {
|
|
|
|
|
...variablesExposedForPreview[component?.id],
|
2023-03-02 06:20:27 +00:00
|
|
|
cellValue: variablesExposedForPreview[component?.id]?.rowData?.[fieldMeta?.name],
|
2022-08-03 13:50:50 +00:00
|
|
|
rowData: { ...variablesExposedForPreview[component?.id]?.rowData },
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
return variablesExposedForPreview[component.id];
|
|
|
|
|
}
|
|
|
|
|
return {};
|
|
|
|
|
};
|
|
|
|
|
|
2021-09-15 15:40:59 +00:00
|
|
|
const getPreview = () => {
|
2022-05-10 09:39:09 +00:00
|
|
|
if (!enablePreview) return;
|
2023-08-31 08:10:04 +00:00
|
|
|
// const customResolvables = getCustomResolvables();
|
|
|
|
|
// const [preview, error] = resolveReferences(currentValue, realState, null, customResolvables, true, true);
|
|
|
|
|
|
2021-12-15 04:23:17 +00:00
|
|
|
const themeCls = darkMode ? 'bg-dark py-1' : 'bg-light py-1';
|
2023-08-31 08:10:04 +00:00
|
|
|
const preview = resolvedValue;
|
|
|
|
|
const error = resolvingError;
|
2021-09-16 12:01:22 +00:00
|
|
|
|
|
|
|
|
if (error) {
|
2022-07-11 10:30:18 +00:00
|
|
|
const err = String(error);
|
2023-08-31 08:15:14 +00:00
|
|
|
const errorMessage = err.includes('.run()')
|
|
|
|
|
? `${err} in ${componentName ? componentName.split('::')[0] + "'s" : 'fx'} field`
|
|
|
|
|
: err;
|
2021-09-16 12:01:22 +00:00
|
|
|
return (
|
2021-12-15 04:23:17 +00:00
|
|
|
<animated.div className={isOpen ? themeCls : null} style={{ ...slideInStyles, overflow: 'hidden' }}>
|
2021-09-17 14:02:50 +00:00
|
|
|
<div ref={heightRef} className="dynamic-variable-preview bg-red-lt px-1 py-1">
|
|
|
|
|
<div>
|
|
|
|
|
<div className="heading my-1">
|
|
|
|
|
<span>Error</span>
|
|
|
|
|
</div>
|
2022-07-11 10:30:18 +00:00
|
|
|
{errorMessage}
|
2021-09-16 12:01:22 +00:00
|
|
|
</div>
|
|
|
|
|
</div>
|
2021-09-17 14:02:50 +00:00
|
|
|
</animated.div>
|
2021-09-16 12:01:22 +00:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-15 06:49:22 +00:00
|
|
|
let previewType = typeof preview;
|
|
|
|
|
let previewContent = preview;
|
|
|
|
|
|
|
|
|
|
if (hasCircularDependency(preview)) {
|
|
|
|
|
previewContent = JSON.stringify(preview, handleCircularStructureToJSON());
|
|
|
|
|
previewType = typeof previewContent;
|
|
|
|
|
}
|
|
|
|
|
const content = getPreviewContent(previewContent, previewType);
|
2021-09-15 15:40:59 +00:00
|
|
|
|
|
|
|
|
return (
|
2022-06-02 07:27:20 +00:00
|
|
|
<animated.div
|
|
|
|
|
className={isOpen ? themeCls : null}
|
|
|
|
|
style={{ ...slideInStyles, overflow: 'hidden' }}
|
|
|
|
|
onMouseEnter={() => focusPreview()}
|
|
|
|
|
onMouseLeave={() => unFocusPreview()}
|
|
|
|
|
>
|
2021-09-17 14:02:50 +00:00
|
|
|
<div ref={heightRef} className="dynamic-variable-preview bg-green-lt px-1 py-1">
|
|
|
|
|
<div>
|
2022-06-02 07:27:20 +00:00
|
|
|
<div className="d-flex my-1">
|
|
|
|
|
<div className="flex-grow-1" style={{ fontWeight: 700, textTransform: 'capitalize' }}>
|
|
|
|
|
{previewType}
|
|
|
|
|
</div>
|
|
|
|
|
{isFocused && (
|
2023-07-03 11:52:14 +00:00
|
|
|
<div className="preview-icons position-relative">
|
2022-06-02 07:27:20 +00:00
|
|
|
<CodeHinter.PopupIcon callback={() => copyToClipboard(content)} icon="copy" tip="Copy to clipboard" />
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
2021-09-17 14:02:50 +00:00
|
|
|
</div>
|
|
|
|
|
{content}
|
2021-09-16 12:01:22 +00:00
|
|
|
</div>
|
2021-09-15 15:40:59 +00:00
|
|
|
</div>
|
2023-08-14 08:58:51 +00:00
|
|
|
{/* Todo: Remove this when workspace variables are deprecated */}
|
|
|
|
|
{enablePreview && isWorkspaceVariable && (
|
|
|
|
|
<CodeHinter.DepericatedAlertForWorkspaceVariable text={'Deprecating soon'} />
|
|
|
|
|
)}
|
2021-09-17 14:02:50 +00:00
|
|
|
</animated.div>
|
2021-09-15 15:40:59 +00:00
|
|
|
);
|
|
|
|
|
};
|
2021-11-15 06:18:09 +00:00
|
|
|
enablePreview = enablePreview ?? true;
|
2021-12-10 03:09:23 +00:00
|
|
|
|
|
|
|
|
const [isOpen, setIsOpen] = React.useState(false);
|
|
|
|
|
|
|
|
|
|
const handleToggle = () => {
|
2022-11-17 08:39:44 +00:00
|
|
|
const changeOpen = (newOpen) => {
|
|
|
|
|
setIsOpen(newOpen);
|
|
|
|
|
if (typeof popOverCallback === 'function') popOverCallback(newOpen);
|
|
|
|
|
};
|
|
|
|
|
|
2021-12-10 03:09:23 +00:00
|
|
|
if (!isOpen) {
|
2022-11-17 08:39:44 +00:00
|
|
|
changeOpen(true);
|
2021-12-10 03:09:23 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return new Promise((resolve) => {
|
|
|
|
|
const element = document.getElementsByClassName('portal-container');
|
|
|
|
|
if (element) {
|
|
|
|
|
const checkPortalExits = element[0]?.classList.contains(componentName);
|
|
|
|
|
|
|
|
|
|
if (checkPortalExits === false) {
|
|
|
|
|
const parent = element[0].parentNode;
|
|
|
|
|
parent.removeChild(element[0]);
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-17 08:39:44 +00:00
|
|
|
changeOpen(false);
|
2021-12-10 03:09:23 +00:00
|
|
|
resolve();
|
|
|
|
|
}
|
|
|
|
|
}).then(() => {
|
2022-11-17 08:39:44 +00:00
|
|
|
changeOpen(true);
|
2021-12-10 03:09:23 +00:00
|
|
|
forceUpdate();
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
const [, forceUpdate] = React.useReducer((x) => x + 1, 0);
|
|
|
|
|
|
2022-05-10 09:39:09 +00:00
|
|
|
const defaultClassName =
|
|
|
|
|
className === 'query-hinter' || className === 'custom-component' || undefined ? '' : 'code-hinter';
|
2021-12-28 07:28:05 +00:00
|
|
|
|
2022-02-01 14:16:21 +00:00
|
|
|
const ElementToRender = AllElements[TypeMapping[type]];
|
|
|
|
|
|
|
|
|
|
const [forceCodeBox, setForceCodeBox] = useState(fxActive);
|
2022-02-07 03:43:12 +00:00
|
|
|
const codeShow = (type ?? 'code') === 'code' || forceCodeBox;
|
2023-02-14 10:10:59 +00:00
|
|
|
cyLabel = paramLabel ? paramLabel.toLowerCase().trim().replace(/\s+/g, '-') : cyLabel;
|
2023-08-14 08:58:51 +00:00
|
|
|
|
2022-02-07 03:43:12 +00:00
|
|
|
return (
|
2023-05-30 03:51:57 +00:00
|
|
|
<div ref={wrapperRef} className={cx({ 'codeShow-active': codeShow })}>
|
2023-09-04 08:00:39 +00:00
|
|
|
<div className={cx('d-flex align-items-center justify-content-between')}>
|
|
|
|
|
{paramLabel === 'Type' && <div className="field-type-vertical-line"></div>}
|
|
|
|
|
{paramLabel && !HIDDEN_CODE_HINTER_LABELS.includes(paramLabel) && (
|
|
|
|
|
<div className={`field ${options.className}`} data-cy={`${cyLabel}-widget-parameter-label`}>
|
2022-09-12 08:47:04 +00:00
|
|
|
<ToolTip
|
2022-09-14 08:04:49 +00:00
|
|
|
label={t(`widget.commonProperties.${camelCase(paramLabel)}`, paramLabel)}
|
2022-09-12 08:47:04 +00:00
|
|
|
meta={fieldMeta}
|
2023-09-04 08:00:39 +00:00
|
|
|
labelClass={`tj-text-xsm color-slate12 ${codeShow ? 'mb-2' : 'mb-0'} ${
|
|
|
|
|
darkMode && 'color-whitish-darkmode'
|
|
|
|
|
}`}
|
2022-09-12 08:47:04 +00:00
|
|
|
/>
|
2022-04-07 11:33:55 +00:00
|
|
|
</div>
|
|
|
|
|
)}
|
2023-09-04 08:00:39 +00:00
|
|
|
<div className={`${(type ?? 'code') === 'code' ? 'd-none' : ''} `}>
|
|
|
|
|
<div
|
|
|
|
|
style={{ width: width, marginBottom: codeShow ? '0.5rem' : '0px' }}
|
|
|
|
|
className="d-flex align-items-center"
|
|
|
|
|
>
|
|
|
|
|
<div className="col-auto pt-0 fx-common">
|
|
|
|
|
{paramLabel !== 'Type' && (
|
|
|
|
|
<FxButton
|
|
|
|
|
active={codeShow}
|
|
|
|
|
onPress={() => {
|
|
|
|
|
if (codeShow) {
|
|
|
|
|
setForceCodeBox(false);
|
|
|
|
|
onFxPress(false);
|
|
|
|
|
} else {
|
|
|
|
|
setForceCodeBox(true);
|
|
|
|
|
onFxPress(true);
|
|
|
|
|
}
|
|
|
|
|
}}
|
|
|
|
|
dataCy={cyLabel}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
|
|
|
|
{!codeShow && (
|
|
|
|
|
<ElementToRender
|
|
|
|
|
value={resolveReferences(initialValue, realState)}
|
|
|
|
|
onChange={(value) => {
|
|
|
|
|
if (value !== currentValue) {
|
|
|
|
|
onChange(value);
|
|
|
|
|
setCurrentValue(value);
|
|
|
|
|
}
|
|
|
|
|
}}
|
|
|
|
|
paramName={paramName}
|
|
|
|
|
paramLabel={paramLabel}
|
|
|
|
|
forceCodeBox={() => {
|
|
|
|
|
setForceCodeBox(true);
|
|
|
|
|
onFxPress(true);
|
|
|
|
|
}}
|
|
|
|
|
meta={fieldMeta}
|
|
|
|
|
cyLabel={cyLabel}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
2022-03-31 09:44:45 +00:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2022-02-07 12:43:28 +00:00
|
|
|
<div
|
2023-05-30 03:51:57 +00:00
|
|
|
className={`row${height === '150px' || height === '300px' ? ' tablr-gutter-x-0' : ''} custom-row`}
|
2022-07-11 10:30:18 +00:00
|
|
|
style={{ width: width, display: codeShow ? 'flex' : 'none' }}
|
2022-02-07 12:43:28 +00:00
|
|
|
>
|
2023-08-09 12:31:48 +00:00
|
|
|
<div className={`col code-hinter-col`}>
|
2023-09-04 08:00:39 +00:00
|
|
|
<div className="d-flex">
|
2023-09-08 11:18:44 +00:00
|
|
|
<div className={`${verticalLine && 'code-hinter-vertical-line'}`}></div>
|
2023-09-04 08:00:39 +00:00
|
|
|
<div className="code-hinter-wrapper position-relative" style={{ width: '100%' }}>
|
|
|
|
|
<div
|
|
|
|
|
className={`${defaultClassName} ${className || 'codehinter-default-input'}`}
|
2022-07-11 10:30:18 +00:00
|
|
|
key={componentName}
|
2023-09-04 08:00:39 +00:00
|
|
|
style={{
|
|
|
|
|
height: height || 'auto',
|
|
|
|
|
minHeight,
|
|
|
|
|
maxHeight: '320px',
|
|
|
|
|
overflow: 'auto',
|
|
|
|
|
fontSize: ' .875rem',
|
|
|
|
|
}}
|
|
|
|
|
data-cy={`${cyLabel}-input-field`}
|
2022-02-07 03:43:12 +00:00
|
|
|
>
|
2023-09-04 08:00:39 +00:00
|
|
|
{usePortalEditor && (
|
|
|
|
|
<CodeHinter.PopupIcon
|
|
|
|
|
callback={handleToggle}
|
|
|
|
|
icon="portal-open"
|
|
|
|
|
tip="Pop out code editor into a new window"
|
|
|
|
|
transformation={componentName === 'transformation'}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
|
|
|
|
<CodeHinter.Portal
|
|
|
|
|
isCopilotEnabled={isCopilotEnabled}
|
|
|
|
|
isOpen={isOpen}
|
|
|
|
|
callback={setIsOpen}
|
|
|
|
|
componentName={componentName}
|
|
|
|
|
key={componentName}
|
|
|
|
|
customComponent={getPreview}
|
|
|
|
|
forceUpdate={forceUpdate}
|
|
|
|
|
optionalProps={{ styles: { height: 300 }, cls: className }}
|
|
|
|
|
darkMode={darkMode}
|
|
|
|
|
selectors={{ className: 'preview-block-portal' }}
|
|
|
|
|
dragResizePortal={true}
|
|
|
|
|
callgpt={callgpt}
|
|
|
|
|
>
|
|
|
|
|
<CodeMirror
|
|
|
|
|
value={typeof initialValue === 'string' ? initialValue : ''}
|
|
|
|
|
realState={realState}
|
|
|
|
|
scrollbarStyle={null}
|
|
|
|
|
height={'100%'}
|
|
|
|
|
onFocus={() => setFocused(true)}
|
|
|
|
|
onBlur={(editor, e) => {
|
|
|
|
|
e.stopPropagation();
|
|
|
|
|
const value = editor.getValue()?.trimEnd();
|
|
|
|
|
onChange(value);
|
|
|
|
|
if (!isPreviewFocused.current) {
|
|
|
|
|
setFocused(false);
|
|
|
|
|
}
|
|
|
|
|
}}
|
|
|
|
|
onChange={(editor) => valueChanged(editor, onChange, ignoreBraces)}
|
|
|
|
|
onBeforeChange={(editor, change) => onBeforeChange(editor, change, ignoreBraces)}
|
|
|
|
|
options={options}
|
|
|
|
|
viewportMargin={Infinity}
|
|
|
|
|
/>
|
|
|
|
|
</CodeHinter.Portal>
|
|
|
|
|
</div>
|
|
|
|
|
{enablePreview && !isOpen && getPreview()}
|
2022-02-07 03:43:12 +00:00
|
|
|
</div>
|
2022-02-01 14:16:21 +00:00
|
|
|
</div>
|
2022-02-07 03:43:12 +00:00
|
|
|
</div>
|
2022-02-01 14:16:21 +00:00
|
|
|
</div>
|
2022-06-02 07:27:20 +00:00
|
|
|
</div>
|
2021-05-03 14:27:32 +00:00
|
|
|
);
|
2021-05-09 03:20:26 +00:00
|
|
|
}
|
2021-12-10 03:09:23 +00:00
|
|
|
|
2023-09-04 08:00:39 +00:00
|
|
|
function CodeHinterInputField() {
|
|
|
|
|
return <></>;
|
|
|
|
|
}
|
|
|
|
|
|
2023-05-11 09:34:48 +00:00
|
|
|
const PopupIcon = ({ callback, icon, tip, transformation = false }) => {
|
|
|
|
|
const size = transformation ? 20 : 12;
|
|
|
|
|
|
2021-12-10 03:09:23 +00:00
|
|
|
return (
|
2023-07-03 11:52:14 +00:00
|
|
|
<div className="d-flex justify-content-end w-100 position-absolute" style={{ top: 0 }}>
|
2021-12-10 03:09:23 +00:00
|
|
|
<OverlayTrigger
|
|
|
|
|
trigger={['hover', 'focus']}
|
|
|
|
|
placement="top"
|
|
|
|
|
delay={{ show: 800, hide: 100 }}
|
2022-06-02 07:27:20 +00:00
|
|
|
overlay={<Tooltip id="button-tooltip">{tip}</Tooltip>}
|
2021-12-10 03:09:23 +00:00
|
|
|
>
|
|
|
|
|
<img
|
|
|
|
|
className="svg-icon m-2 popup-btn"
|
2022-08-27 16:28:24 +00:00
|
|
|
src={`assets/images/icons/${icon}.svg`}
|
2023-05-11 09:34:48 +00:00
|
|
|
width={size}
|
|
|
|
|
height={size}
|
2021-12-10 03:09:23 +00:00
|
|
|
onClick={(e) => {
|
|
|
|
|
e.stopPropagation();
|
|
|
|
|
callback();
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
</OverlayTrigger>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const Portal = ({ children, ...restProps }) => {
|
|
|
|
|
const renderPortal = usePortal({ children, ...restProps });
|
|
|
|
|
|
|
|
|
|
return <React.Fragment>{renderPortal}</React.Fragment>;
|
|
|
|
|
};
|
|
|
|
|
|
2023-08-14 08:58:51 +00:00
|
|
|
const DepericatedAlertForWorkspaceVariable = ({ text }) => {
|
|
|
|
|
return (
|
|
|
|
|
<Alert
|
|
|
|
|
svg="tj-info-warning"
|
|
|
|
|
cls="codehinter workspace-variables-alert-banner p-1 mb-0"
|
|
|
|
|
data-cy={``}
|
|
|
|
|
imgHeight={18}
|
|
|
|
|
imgWidth={18}
|
|
|
|
|
>
|
|
|
|
|
<div className="d-flex align-items-center">
|
|
|
|
|
<div class="">{text}</div>
|
|
|
|
|
</div>
|
|
|
|
|
</Alert>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
2021-12-10 03:09:23 +00:00
|
|
|
CodeHinter.PopupIcon = PopupIcon;
|
|
|
|
|
CodeHinter.Portal = Portal;
|
2023-08-14 08:58:51 +00:00
|
|
|
CodeHinter.DepericatedAlertForWorkspaceVariable = DepericatedAlertForWorkspaceVariable;
|