@jotforminc/dnd-builder 3.4.2 → 3.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/index.d.ts +2 -0
- package/lib/cjs/assets/svg/angle_down.svg.js +22 -0
- package/lib/cjs/assets/svg/angle_down.svg.js.map +1 -0
- package/lib/cjs/assets/svg/angle_left.svg.js +22 -0
- package/lib/cjs/assets/svg/angle_left.svg.js.map +1 -0
- package/lib/cjs/assets/svg/angle_right.svg.js +22 -0
- package/lib/cjs/assets/svg/angle_right.svg.js.map +1 -0
- package/lib/cjs/assets/svg/angle_up.svg.js +22 -0
- package/lib/cjs/assets/svg/angle_up.svg.js.map +1 -0
- package/lib/cjs/assets/svg/contextmenu/moveToBack.svg.js +9 -18
- package/lib/cjs/assets/svg/contextmenu/moveToBack.svg.js.map +1 -1
- package/lib/cjs/assets/svg/contextmenu/moveToBackward.svg.js +12 -18
- package/lib/cjs/assets/svg/contextmenu/moveToBackward.svg.js.map +1 -1
- package/lib/cjs/assets/svg/contextmenu/moveToForward.svg.js +12 -18
- package/lib/cjs/assets/svg/contextmenu/moveToForward.svg.js.map +1 -1
- package/lib/cjs/assets/svg/contextmenu/moveToFront.svg.js +9 -18
- package/lib/cjs/assets/svg/contextmenu/moveToFront.svg.js.map +1 -1
- package/lib/cjs/components/Builder/Builder.js +3 -0
- package/lib/cjs/components/Builder/Builder.js.map +1 -1
- package/lib/cjs/components/Builder/ContextMenu.js +1 -1
- package/lib/cjs/components/Builder/ContextMenu.js.map +1 -1
- package/lib/cjs/components/Builder/PageActions.js +19 -19
- package/lib/cjs/components/Builder/PageActions.js.map +1 -1
- package/lib/cjs/components/Builder/ZoomControls.js +8 -8
- package/lib/cjs/components/Builder/ZoomControls.js.map +1 -1
- package/lib/cjs/components/DraggableItem/DraggableItemActions.js +12 -12
- package/lib/cjs/components/DraggableItem/DraggableItemActions.js.map +1 -1
- package/lib/cjs/components/DraggableItem/DraggableItemLayer.js +1 -1
- package/lib/cjs/components/DraggableItem/DraggableItemLayer.js.map +1 -1
- package/lib/cjs/components/PageItemResizer.js +1 -1
- package/lib/cjs/components/PageItemResizer.js.map +1 -1
- package/lib/cjs/components/Panels/RightPanel/RightPanel.js +10 -3
- package/lib/cjs/components/Panels/RightPanel/RightPanel.js.map +1 -1
- package/lib/cjs/components/TextEditor/QuillEditor.js +8 -10
- package/lib/cjs/components/TextEditor/QuillEditor.js.map +1 -1
- package/lib/cjs/components/TextEditor/TextEditor.js +2 -10
- package/lib/cjs/components/TextEditor/TextEditor.js.map +1 -1
- package/lib/cjs/components/withClickOutside.js +7 -1
- package/lib/cjs/components/withClickOutside.js.map +1 -1
- package/lib/cjs/constants/eventIgnoredRoles.js +2 -0
- package/lib/cjs/constants/eventIgnoredRoles.js.map +1 -1
- package/lib/cjs/contexts/BuilderContext.js +1 -0
- package/lib/cjs/contexts/BuilderContext.js.map +1 -1
- package/lib/cjs/contexts/Providers.js +6 -1
- package/lib/cjs/contexts/Providers.js.map +1 -1
- package/lib/cjs/styles/_jfReportsFloatings.scss +109 -2
- package/lib/cjs/styles/_jfReportsPages.scss +21 -28
- package/lib/cjs/styles/_jfReportsReportItem.scss +79 -53
- package/lib/cjs/styles/_jfReportsTextEditor.scss +2 -2
- package/lib/cjs/styles/_jfReportsViewModes.scss +4 -4
- package/lib/cjs/utils/icons.js +8 -0
- package/lib/cjs/utils/icons.js.map +1 -1
- package/lib/cjs/utils/useKeyboardActions.js +3 -0
- package/lib/cjs/utils/useKeyboardActions.js.map +1 -1
- package/lib/esm/assets/svg/angle_down.svg.js +20 -0
- package/lib/esm/assets/svg/angle_down.svg.js.map +1 -0
- package/lib/esm/assets/svg/angle_left.svg.js +20 -0
- package/lib/esm/assets/svg/angle_left.svg.js.map +1 -0
- package/lib/esm/assets/svg/angle_right.svg.js +20 -0
- package/lib/esm/assets/svg/angle_right.svg.js.map +1 -0
- package/lib/esm/assets/svg/angle_up.svg.js +20 -0
- package/lib/esm/assets/svg/angle_up.svg.js.map +1 -0
- package/lib/esm/assets/svg/contextmenu/moveToBack.svg.js +9 -18
- package/lib/esm/assets/svg/contextmenu/moveToBack.svg.js.map +1 -1
- package/lib/esm/assets/svg/contextmenu/moveToBackward.svg.js +12 -18
- package/lib/esm/assets/svg/contextmenu/moveToBackward.svg.js.map +1 -1
- package/lib/esm/assets/svg/contextmenu/moveToForward.svg.js +12 -18
- package/lib/esm/assets/svg/contextmenu/moveToForward.svg.js.map +1 -1
- package/lib/esm/assets/svg/contextmenu/moveToFront.svg.js +9 -18
- package/lib/esm/assets/svg/contextmenu/moveToFront.svg.js.map +1 -1
- package/lib/esm/components/Builder/Builder.js +3 -0
- package/lib/esm/components/Builder/Builder.js.map +1 -1
- package/lib/esm/components/Builder/ContextMenu.js +1 -1
- package/lib/esm/components/Builder/ContextMenu.js.map +1 -1
- package/lib/esm/components/Builder/PageActions.js +19 -19
- package/lib/esm/components/Builder/PageActions.js.map +1 -1
- package/lib/esm/components/Builder/ZoomControls.js +8 -8
- package/lib/esm/components/Builder/ZoomControls.js.map +1 -1
- package/lib/esm/components/DraggableItem/DraggableItemActions.js +12 -12
- package/lib/esm/components/DraggableItem/DraggableItemActions.js.map +1 -1
- package/lib/esm/components/DraggableItem/DraggableItemLayer.js +1 -1
- package/lib/esm/components/DraggableItem/DraggableItemLayer.js.map +1 -1
- package/lib/esm/components/PageItemResizer.js +1 -1
- package/lib/esm/components/PageItemResizer.js.map +1 -1
- package/lib/esm/components/Panels/RightPanel/RightPanel.js +10 -3
- package/lib/esm/components/Panels/RightPanel/RightPanel.js.map +1 -1
- package/lib/esm/components/TextEditor/QuillEditor.js +8 -10
- package/lib/esm/components/TextEditor/QuillEditor.js.map +1 -1
- package/lib/esm/components/TextEditor/TextEditor.js +3 -11
- package/lib/esm/components/TextEditor/TextEditor.js.map +1 -1
- package/lib/esm/components/withClickOutside.js +7 -1
- package/lib/esm/components/withClickOutside.js.map +1 -1
- package/lib/esm/constants/eventIgnoredRoles.js +2 -1
- package/lib/esm/constants/eventIgnoredRoles.js.map +1 -1
- package/lib/esm/contexts/BuilderContext.js +1 -0
- package/lib/esm/contexts/BuilderContext.js.map +1 -1
- package/lib/esm/contexts/Providers.js +6 -1
- package/lib/esm/contexts/Providers.js.map +1 -1
- package/lib/esm/styles/_jfReportsFloatings.scss +109 -2
- package/lib/esm/styles/_jfReportsPages.scss +21 -28
- package/lib/esm/styles/_jfReportsReportItem.scss +79 -53
- package/lib/esm/styles/_jfReportsTextEditor.scss +2 -2
- package/lib/esm/styles/_jfReportsViewModes.scss +4 -4
- package/lib/esm/utils/icons.js +4 -0
- package/lib/esm/utils/icons.js.map +1 -1
- package/lib/esm/utils/useKeyboardActions.js +4 -1
- package/lib/esm/utils/useKeyboardActions.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Providers.js","sources":["../../../src/contexts/Providers.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { BuilderProvider } from './BuilderContext';\nimport { PresentationProvider } from './PresentationContext';\nimport { PropProvider } from './PropContext';\n\nconst Providers = ({\n children,\n lastScrollPosition,\n mode,\n onRightPanelsToggled,\n presentationBarActions,\n shouldShowRightPanelInitially,\n useFixedPresentationBar,\n ...props\n}) => {\n return (\n <BuilderProvider\n lastScrollPosition={lastScrollPosition}\n onRightPanelsToggled={onRightPanelsToggled}\n shouldShowRightPanelInitially={shouldShowRightPanelInitially}\n >\n <PropProvider {...props}>\n {mode === 'customize' ? children : (\n <PresentationProvider\n presentationBarActions={presentationBarActions}\n useFixedPresentationBar={useFixedPresentationBar}\n >\n {children}\n </PresentationProvider>\n )}\n </PropProvider>\n </BuilderProvider>\n );\n};\n\nProviders.propTypes = {\n children: PropTypes.node.isRequired,\n /** Last scroll position */\n lastScrollPosition: PropTypes.number,\n /** Mode of the report */\n mode: PropTypes.oneOf(['customize', 'presentation', 'preview', 'print']),\n /** Function called when the slides or the right panel is\n * toggled takes a boolean value to indicate whether or\n * not the panel is toggled open.\n */\n onRightPanelsToggled: PropTypes.func,\n /** To pass in action definitions that will be rendered as buttons */\n presentationBarActions: PropTypes.arrayOf(PropTypes.shape({})),\n /** Flag for fixed action bar */\n shouldShowRightPanelInitially: PropTypes.bool,\n /** Flag for whether to show the right panel initially */\n useFixedPresentationBar: PropTypes.bool,\n};\n\nexport default Providers;\n"],"names":["Providers","children","lastScrollPosition","mode","onRightPanelsToggled","presentationBarActions","shouldShowRightPanelInitially","useFixedPresentationBar","props","_jsx","propTypes","PropTypes","node","isRequired","number","oneOf","func","
|
|
1
|
+
{"version":3,"file":"Providers.js","sources":["../../../src/contexts/Providers.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { BuilderProvider } from './BuilderContext';\nimport { PresentationProvider } from './PresentationContext';\nimport { PropProvider } from './PropContext';\n\nconst Providers = ({\n children,\n clickOutsideIgnoreSelectors,\n lastScrollPosition,\n mode,\n onRightPanelsToggled,\n presentationBarActions,\n shouldShowRightPanelInitially,\n useFixedPresentationBar,\n ...props\n}) => {\n return (\n <BuilderProvider\n clickOutsideIgnoreSelectors={clickOutsideIgnoreSelectors}\n lastScrollPosition={lastScrollPosition}\n onRightPanelsToggled={onRightPanelsToggled}\n shouldShowRightPanelInitially={shouldShowRightPanelInitially}\n >\n <PropProvider {...props}>\n {mode === 'customize' ? children : (\n <PresentationProvider\n presentationBarActions={presentationBarActions}\n useFixedPresentationBar={useFixedPresentationBar}\n >\n {children}\n </PresentationProvider>\n )}\n </PropProvider>\n </BuilderProvider>\n );\n};\n\nProviders.propTypes = {\n children: PropTypes.node.isRequired,\n /** CSS selectors ignored by right panel click-outside logic */\n clickOutsideIgnoreSelectors: PropTypes.arrayOf(PropTypes.string),\n /** Last scroll position */\n lastScrollPosition: PropTypes.number,\n /** Mode of the report */\n mode: PropTypes.oneOf(['customize', 'presentation', 'preview', 'print']),\n /** Function called when the slides or the right panel is\n * toggled takes a boolean value to indicate whether or\n * not the panel is toggled open.\n */\n onRightPanelsToggled: PropTypes.func,\n /** To pass in action definitions that will be rendered as buttons */\n presentationBarActions: PropTypes.arrayOf(PropTypes.shape({})),\n /** Flag for fixed action bar */\n shouldShowRightPanelInitially: PropTypes.bool,\n /** Flag for whether to show the right panel initially */\n useFixedPresentationBar: PropTypes.bool,\n};\n\nexport default Providers;\n"],"names":["Providers","children","clickOutsideIgnoreSelectors","lastScrollPosition","mode","onRightPanelsToggled","presentationBarActions","shouldShowRightPanelInitially","useFixedPresentationBar","props","_jsx","propTypes","PropTypes","node","isRequired","arrayOf","string","number","oneOf","func","shape","bool"],"mappings":";;;;;;;;;;;;;;;;;;IAKMA,SAAS,GAAG,SAAZA,SAAY,OAUZ;AAAA,MATJC,QASI,QATJA,QASI;AAAA,MARJC,2BAQI,QARJA,2BAQI;AAAA,MAPJC,kBAOI,QAPJA,kBAOI;AAAA,MANJC,IAMI,QANJA,IAMI;AAAA,MALJC,oBAKI,QALJA,oBAKI;AAAA,MAJJC,sBAII,QAJJA,sBAII;AAAA,MAHJC,6BAGI,QAHJA,6BAGI;AAAA,MAFJC,uBAEI,QAFJA,uBAEI;AAAA,MADDC,KACC;;AACJ,sBACEC,IAAC,eAAD;AACE,IAAA,2BAA2B,EAAER,2BAD/B;AAEE,IAAA,kBAAkB,EAAEC,kBAFtB;AAGE,IAAA,oBAAoB,EAAEE,oBAHxB;AAIE,IAAA,6BAA6B,EAAEE,6BAJjC;AAAA,2BAMEG,IAAC,YAAD,kCAAkBD,KAAlB;AAAA,gBACGL,IAAI,KAAK,WAAT,GAAuBH,QAAvB,gBACCS,IAAC,oBAAD;AACE,QAAA,sBAAsB,EAAEJ,sBAD1B;AAEE,QAAA,uBAAuB,EAAEE,uBAF3B;AAAA,kBAIGP;AAJH;AAFJ;AANF,IADF;AAmBD;;AAEDD,SAAS,CAACW,SAAV,GAAsB;AACpBV,EAAAA,QAAQ,EAAEW,SAAS,CAACC,IAAV,CAAeC,UADL;;AAEpB;AACAZ,EAAAA,2BAA2B,EAAEU,SAAS,CAACG,OAAV,CAAkBH,SAAS,CAACI,MAA5B,CAHT;;AAIpB;AACAb,EAAAA,kBAAkB,EAAES,SAAS,CAACK,MALV;;AAMpB;AACAb,EAAAA,IAAI,EAAEQ,SAAS,CAACM,KAAV,CAAgB,CAAC,WAAD,EAAc,cAAd,EAA8B,SAA9B,EAAyC,OAAzC,CAAhB,CAPc;;AAQpB;AACF;AACA;AACA;AACEb,EAAAA,oBAAoB,EAAEO,SAAS,CAACO,IAZZ;;AAapB;AACAb,EAAAA,sBAAsB,EAAEM,SAAS,CAACG,OAAV,CAAkBH,SAAS,CAACQ,KAAV,CAAgB,EAAhB,CAAlB,CAdJ;;AAepB;AACAb,EAAAA,6BAA6B,EAAEK,SAAS,CAACS,IAhBrB;;AAiBpB;AACAb,EAAAA,uBAAuB,EAAEI,SAAS,CAACS;AAlBf,CAAtB;;;;"}
|
|
@@ -151,13 +151,13 @@
|
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
.controllerItem {
|
|
154
|
+
:where(.controllerItem) {
|
|
155
155
|
background: #343C6A;
|
|
156
156
|
border-radius: 3px;
|
|
157
157
|
border: none;
|
|
158
158
|
transition: $transition;
|
|
159
159
|
|
|
160
|
-
&:hover {
|
|
160
|
+
&:where(:hover) {
|
|
161
161
|
background: rgba(111, 118, 167, 0.6);
|
|
162
162
|
}
|
|
163
163
|
}
|
|
@@ -197,6 +197,113 @@
|
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
+
// Page Toolbar new styles //
|
|
201
|
+
&.page-toolbar {
|
|
202
|
+
position: absolute;
|
|
203
|
+
top: 58px;
|
|
204
|
+
right: -40px;
|
|
205
|
+
gap: 4px;
|
|
206
|
+
|
|
207
|
+
.controllerItem {
|
|
208
|
+
max-width: 24px;
|
|
209
|
+
max-height: 24px;
|
|
210
|
+
min-width: 24px;
|
|
211
|
+
min-height: 24px;
|
|
212
|
+
|
|
213
|
+
.toolbar-icon {
|
|
214
|
+
width: 16px;
|
|
215
|
+
height: 16px;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// Zoom Toolbar new styles //
|
|
221
|
+
&.zoom-toolbar {
|
|
222
|
+
position: absolute;
|
|
223
|
+
bottom: 20px;
|
|
224
|
+
left: 20px;
|
|
225
|
+
gap: 4px;
|
|
226
|
+
z-index: 2;
|
|
227
|
+
|
|
228
|
+
.controllerItem {
|
|
229
|
+
max-width: 32px;
|
|
230
|
+
max-height: 32px;
|
|
231
|
+
min-width: 32px;
|
|
232
|
+
min-height: 32px;
|
|
233
|
+
|
|
234
|
+
.toolbar-icon {
|
|
235
|
+
width: 20px;
|
|
236
|
+
height: 20px;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
&.page-toolbar, &.zoom-toolbar {
|
|
242
|
+
display: flex;
|
|
243
|
+
flex-direction: column;
|
|
244
|
+
align-items: flex-start;
|
|
245
|
+
justify-content: flex-start;
|
|
246
|
+
transition: $transition;
|
|
247
|
+
border-radius: 3px;
|
|
248
|
+
|
|
249
|
+
.floatingController-container {
|
|
250
|
+
display: flex;
|
|
251
|
+
padding: 4px;
|
|
252
|
+
flex-direction: column;
|
|
253
|
+
justify-content: center;
|
|
254
|
+
align-items: center;
|
|
255
|
+
gap: 4px;
|
|
256
|
+
box-shadow: 0 4px 8px 0 rgba(84, 95, 111, 0.15), 0 0 2px 0 rgba(37, 45, 91, 0.1);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
:where(.floatingController-container + .floatingController-container) {
|
|
260
|
+
margin-top: 0;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
.controllerItem {
|
|
264
|
+
width: 100%;
|
|
265
|
+
height: 100%;
|
|
266
|
+
display: flex;
|
|
267
|
+
padding: 4px;
|
|
268
|
+
flex-shrink: 0;
|
|
269
|
+
flex-direction: column;
|
|
270
|
+
justify-content: center;
|
|
271
|
+
align-items: center;
|
|
272
|
+
border-radius: 4px;
|
|
273
|
+
background-color: #F9F9FF;
|
|
274
|
+
transition: $transition;
|
|
275
|
+
|
|
276
|
+
.toolbar-icon {
|
|
277
|
+
color: #0A1551;
|
|
278
|
+
fill: #0A1551;
|
|
279
|
+
transition: $transition;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
&:where(:hover) {
|
|
283
|
+
background-color: #E3E5F5;
|
|
284
|
+
transition: $transition;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
&:hover.primary {
|
|
288
|
+
background-color: #EDF8FF;
|
|
289
|
+
|
|
290
|
+
.toolbar-icon {
|
|
291
|
+
color: #0075E3;
|
|
292
|
+
fill: #0075E3;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
&:hover.error {
|
|
297
|
+
background-color: #FEF2F2;
|
|
298
|
+
|
|
299
|
+
.toolbar-icon {
|
|
300
|
+
color: #DC2626;
|
|
301
|
+
fill: #DC2626;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
200
307
|
|
|
201
308
|
&.forZoom {
|
|
202
309
|
left: 15px;
|
|
@@ -153,43 +153,40 @@
|
|
|
153
153
|
|
|
154
154
|
|
|
155
155
|
.contextMenu-wrapper {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
156
|
+
display: flex;
|
|
157
|
+
padding: 4px;
|
|
158
|
+
flex-direction: column;
|
|
159
|
+
justify-content: center;
|
|
160
|
+
align-items: flex-start;
|
|
160
161
|
position: absolute;
|
|
161
162
|
width: 225px;
|
|
162
163
|
z-index: 10;
|
|
163
|
-
|
|
164
|
+
border-radius: 4px;
|
|
165
|
+
background: #252D5B;
|
|
166
|
+
color: #FFFFFF;
|
|
164
167
|
}
|
|
165
168
|
|
|
166
169
|
.contextMenu-button {
|
|
167
|
-
transition: .2s ease-in-out;
|
|
168
170
|
cursor: pointer;
|
|
169
171
|
display: flex;
|
|
170
172
|
align-items: center;
|
|
171
173
|
justify-content: flex-start;
|
|
172
174
|
background: none;
|
|
173
175
|
border: none;
|
|
174
|
-
height:
|
|
176
|
+
height: 40px;
|
|
175
177
|
width: 100%;
|
|
176
178
|
font-size: 0.875rem;
|
|
177
|
-
padding
|
|
179
|
+
padding: 0 8px;
|
|
178
180
|
text-align: left;
|
|
181
|
+
color: #FFFFFF;
|
|
182
|
+
transition: .2s ease-in-out;
|
|
179
183
|
|
|
180
184
|
.contextMenu-icon {
|
|
185
|
+
color: #FFFFFF;
|
|
181
186
|
margin-right: 9px;
|
|
182
|
-
width:
|
|
183
|
-
height:
|
|
184
|
-
|
|
185
|
-
.icon-lock {
|
|
186
|
-
width: 16px;
|
|
187
|
-
height: 14px;
|
|
188
|
-
fill: $blue;
|
|
189
|
-
stroke: $blue;
|
|
190
|
-
|
|
191
|
-
> path { fill: $blue; }
|
|
192
|
-
}
|
|
187
|
+
width: 16px;
|
|
188
|
+
height: 16px;
|
|
189
|
+
fill: #FFFFFF;
|
|
193
190
|
}
|
|
194
191
|
|
|
195
192
|
.contextMenu-text {
|
|
@@ -200,20 +197,16 @@
|
|
|
200
197
|
}
|
|
201
198
|
|
|
202
199
|
&:hover {
|
|
203
|
-
background: #
|
|
200
|
+
background-color: #454E80;
|
|
201
|
+
transition: all 0.3s ease;
|
|
204
202
|
}
|
|
205
203
|
}
|
|
206
204
|
|
|
207
205
|
.contextMenu-button.isDanger {
|
|
206
|
+
color: #DC2626;
|
|
208
207
|
|
|
209
208
|
.contextMenu-icon {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
height: 16px;
|
|
213
|
-
}
|
|
209
|
+
color: #DC2626;
|
|
210
|
+
fill: #DC2626;
|
|
214
211
|
}
|
|
215
212
|
}
|
|
216
|
-
|
|
217
|
-
.contextMenu-button + .contextMenu-button {
|
|
218
|
-
border-top: 1px solid #F0F0F0;
|
|
219
|
-
}
|
|
@@ -74,17 +74,16 @@
|
|
|
74
74
|
content: "";
|
|
75
75
|
position: absolute;
|
|
76
76
|
display: block;
|
|
77
|
-
background-color: #
|
|
78
|
-
border:
|
|
77
|
+
background-color: #FFFFFF;
|
|
78
|
+
border: 3px solid #0099FF;
|
|
79
79
|
transition: .3s ease-in-out;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
&:not(.forLine):after {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
border-radius: 2px;
|
|
83
|
+
inset: 2px;
|
|
84
|
+
width: 3px;
|
|
85
|
+
height: 3px;
|
|
86
|
+
border-radius: 3px;
|
|
88
87
|
}
|
|
89
88
|
|
|
90
89
|
&.forLine {
|
|
@@ -93,26 +92,28 @@
|
|
|
93
92
|
}
|
|
94
93
|
&:not(.isVertical) {
|
|
95
94
|
&:after {
|
|
96
|
-
top:
|
|
95
|
+
top: -0.5px;
|
|
97
96
|
bottom: 1px;
|
|
98
|
-
left: calc(50% -
|
|
99
|
-
width:
|
|
97
|
+
left: calc(50% - 6px);
|
|
98
|
+
width: 8px;
|
|
99
|
+
height: 4px;
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
&.isVertical {
|
|
104
104
|
&:after {
|
|
105
|
-
top: calc(50% -
|
|
106
|
-
left:
|
|
107
|
-
right:
|
|
108
|
-
height:
|
|
105
|
+
top: calc(50% - 6px);
|
|
106
|
+
left: -0.5px;
|
|
107
|
+
right: -0.5px;
|
|
108
|
+
height: 8px;
|
|
109
|
+
width: 4px;
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
112
|
}
|
|
112
113
|
|
|
113
114
|
&:hover {
|
|
114
115
|
&:after {
|
|
115
|
-
background-color: #
|
|
116
|
+
background-color: #FFFFFF;
|
|
116
117
|
}
|
|
117
118
|
}
|
|
118
119
|
}
|
|
@@ -123,7 +124,7 @@
|
|
|
123
124
|
top: -50px;
|
|
124
125
|
padding: 5px;
|
|
125
126
|
background-color: #ddefff;
|
|
126
|
-
border:
|
|
127
|
+
border: 2px solid #0099FF;
|
|
127
128
|
border-radius: 50%;
|
|
128
129
|
|
|
129
130
|
&:before {
|
|
@@ -148,8 +149,7 @@
|
|
|
148
149
|
}
|
|
149
150
|
|
|
150
151
|
.reportItemResizer {
|
|
151
|
-
border:
|
|
152
|
-
box-shadow: 0 0 0 3px rgba(106, 110, 143, 0.15);
|
|
152
|
+
border: 3px solid #0099FF;
|
|
153
153
|
border-radius: 3px;
|
|
154
154
|
|
|
155
155
|
&.hideVerticalHandle {
|
|
@@ -216,56 +216,82 @@
|
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
.jfReport {
|
|
219
|
-
.
|
|
219
|
+
.report-item-toolbar {
|
|
220
220
|
position: absolute;
|
|
221
|
-
top:
|
|
221
|
+
top: 50%;
|
|
222
|
+
transform: translateY(-50%);
|
|
222
223
|
right: -24px;
|
|
223
|
-
background-color:
|
|
224
|
-
|
|
224
|
+
background-color: #FFFFFF;
|
|
225
|
+
padding: 4px;
|
|
226
|
+
border-radius: 3px;
|
|
227
|
+
display: flex;
|
|
228
|
+
flex-direction: column;
|
|
229
|
+
align-items: center;
|
|
230
|
+
justify-content: center;
|
|
225
231
|
text-align: center;
|
|
226
232
|
pointer-events: all;
|
|
233
|
+
z-index: 2;
|
|
227
234
|
animation: .2s fadeRight forwards;
|
|
235
|
+
gap: 4px;
|
|
236
|
+
box-shadow: 0 4px 8px 0 rgba(84, 95, 111, 0.15), 0 0 2px 0 rgba(37, 45, 91, 0.1);
|
|
228
237
|
|
|
229
238
|
&-item {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
239
|
+
max-width: 24px;
|
|
240
|
+
max-height: 24px;
|
|
241
|
+
min-width: 24px;
|
|
242
|
+
min-height: 24px;
|
|
243
|
+
width: 100%;
|
|
244
|
+
height: 100%;
|
|
245
|
+
display: flex;
|
|
246
|
+
padding: 4px;
|
|
247
|
+
flex-shrink: 0;
|
|
248
|
+
flex-direction: column;
|
|
249
|
+
justify-content: center;
|
|
250
|
+
align-items: center;
|
|
251
|
+
border-radius: 4px;
|
|
252
|
+
background-color: #F9F9FF;
|
|
253
|
+
transition: $transition;
|
|
254
|
+
|
|
255
|
+
.toolbar-icon {
|
|
256
|
+
width: 16px;
|
|
257
|
+
height: 16px;
|
|
258
|
+
color: #0A1551;
|
|
259
|
+
fill: #0A1551;
|
|
260
|
+
transition: $transition;
|
|
240
261
|
}
|
|
241
|
-
}
|
|
242
262
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
align-items: center;
|
|
248
|
-
justify-content: center;
|
|
249
|
-
width: 20px;
|
|
250
|
-
height: 20px;
|
|
251
|
-
padding: 0;
|
|
252
|
-
border-radius: 3px;
|
|
253
|
-
transition: 0.3s ease-in;
|
|
263
|
+
&:where(:hover) {
|
|
264
|
+
background-color: #E3E5F5;
|
|
265
|
+
transition: $transition;
|
|
266
|
+
}
|
|
254
267
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
}
|
|
268
|
+
&:hover.primary {
|
|
269
|
+
background-color: #EDF8FF;
|
|
258
270
|
|
|
259
|
-
|
|
260
|
-
|
|
271
|
+
.toolbar-icon {
|
|
272
|
+
color: #0075E3;
|
|
273
|
+
fill: #0075E3;
|
|
261
274
|
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
&:hover.error {
|
|
278
|
+
background-color: #FEF2F2;
|
|
262
279
|
|
|
263
|
-
|
|
264
|
-
|
|
280
|
+
.toolbar-icon {
|
|
281
|
+
color: #DC2626;
|
|
282
|
+
fill: #DC2626;
|
|
265
283
|
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
&.isLocked.forLocked {
|
|
288
|
+
background-color: #C8CEED;
|
|
289
|
+
|
|
290
|
+
.report-item-toolbar-item {
|
|
291
|
+
background-color: #C8CEED;
|
|
266
292
|
|
|
267
293
|
&:hover {
|
|
268
|
-
background-color:
|
|
294
|
+
background-color: #E3E5F5;
|
|
269
295
|
}
|
|
270
296
|
}
|
|
271
297
|
}
|
|
@@ -277,7 +303,7 @@
|
|
|
277
303
|
opacity: 0;
|
|
278
304
|
}
|
|
279
305
|
100% {
|
|
280
|
-
right: -
|
|
306
|
+
right: -38px;
|
|
281
307
|
opacity: 1;
|
|
282
308
|
}
|
|
283
309
|
}
|
|
@@ -291,7 +291,7 @@
|
|
|
291
291
|
}
|
|
292
292
|
}
|
|
293
293
|
|
|
294
|
-
.
|
|
294
|
+
.report-item-toolbar + .ql-toolbar.ql-snow {
|
|
295
295
|
.ql-stroke {
|
|
296
296
|
/* stylelint-disable-next-line declaration-no-important */
|
|
297
297
|
stroke: #6F76A7 !important;
|
|
@@ -304,6 +304,6 @@
|
|
|
304
304
|
}
|
|
305
305
|
}
|
|
306
306
|
|
|
307
|
-
.
|
|
307
|
+
.report-item-toolbar + .ql-toolbar.ql-snow .ql-button:hover {
|
|
308
308
|
background-color: #F3F3FE;
|
|
309
309
|
}
|
|
@@ -44,21 +44,21 @@
|
|
|
44
44
|
fill: $additionalGray;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
.
|
|
47
|
+
.report-item-toolbar-item:hover .isWhite {
|
|
48
48
|
fill: darken($additionalGray, 10);
|
|
49
49
|
opacity: 1;
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
.reportItem {
|
|
54
|
-
outline:
|
|
54
|
+
outline: 3px solid transparent;
|
|
55
55
|
outline-offset: -1px;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
[data-zoom="0.5"] .reportItem,
|
|
59
59
|
[data-zoom="0.6"] .reportItem,
|
|
60
60
|
[data-zoom="0.7"] .reportItem {
|
|
61
|
-
outline-width:
|
|
61
|
+
outline-width: 3px;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
.reportItemWrapper.isSelected:hover .isLocked {
|
|
@@ -70,6 +70,6 @@
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
.reportItemWrapper:not(.isSelected) .reportItem:not(.isLocked):hover {
|
|
73
|
-
outline-color:
|
|
73
|
+
outline-color: #0099FF;
|
|
74
74
|
}
|
|
75
75
|
}
|
package/lib/esm/utils/icons.js
CHANGED
|
@@ -48,6 +48,10 @@ export { default as settings } from '../assets/svg/settings.svg.js';
|
|
|
48
48
|
export { default as arrowUp } from '../assets/svg/arrow_up.svg.js';
|
|
49
49
|
export { default as arrowLeft } from '../assets/svg/arrow_left.svg.js';
|
|
50
50
|
export { default as arrowRight } from '../assets/svg/arrow_right.svg.js';
|
|
51
|
+
export { default as angleDown } from '../assets/svg/angle_down.svg.js';
|
|
52
|
+
export { default as angleUp } from '../assets/svg/angle_up.svg.js';
|
|
53
|
+
export { default as angleLeft } from '../assets/svg/angle_left.svg.js';
|
|
54
|
+
export { default as angleRight } from '../assets/svg/angle_right.svg.js';
|
|
51
55
|
export { default as duplicateLine } from '../assets/svg/page-actions/duplicate_line.svg.js';
|
|
52
56
|
export { default as plus } from '../assets/svg/plus.svg.js';
|
|
53
57
|
export { default as minus } from '../assets/svg/minus.svg.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icons.js","sources":["../../../src/utils/icons.js"],"sourcesContent":["// General //\n\nexport { default as down } from '../assets/svg/arrow_down.svg';\nexport { default as drag } from '../assets/svg/settings/drag.svg';\nexport { default as trash } from '../assets/svg/trash.svg';\nexport { default as close } from '../assets/svg/close.svg';\nexport { default as rotate } from '../assets/svg/rotate.svg';\nexport { default as customize } from '../assets/svg/customize.svg';\nexport { default as slides } from '../assets/svg/slides.svg';\nexport { default as allSlides } from '../assets/svg/all_slides.svg';\nexport { default as settingsToggle } from '../assets/svg/settings_toggle.svg';\n\n// Elements //\n\nexport { default as header } from '../assets/svg/toolbox/header.svg';\nexport { default as icon } from '../assets/svg/toolbox/icon.svg';\nexport { default as image } from '../assets/svg/toolbox/image.svg';\nexport { default as label } from '../assets/svg/toolbox/label.svg';\nexport { default as shapes } from '../assets/svg/toolbox/shapes.svg';\nexport { default as table } from '../assets/svg/toolbox/table.svg';\nexport { default as textElement } from '../assets/svg/toolbox/text_element.svg';\nexport { default as text } from '../assets/svg/toolbox/text.svg';\nexport { default as star } from '../assets/svg/toolbox/star.svg';\nexport { default as email } from '../assets/svg/toolbox/email.svg';\nexport { default as singleChoice } from '../assets/svg/toolbox/single_choice.svg';\nexport { default as multipleChoice } from '../assets/svg/toolbox/multiple_choice.svg';\nexport { default as lock } from '../assets/svg/settings/lock.svg';\nexport { default as unlock } from '../assets/svg/settings/unlock.svg';\n\n// Settings //\n\nexport { default as bold } from '../assets/svg/settings/font_bold.svg';\nexport { default as italic } from '../assets/svg/settings/font_italic.svg';\nexport { default as underline } from '../assets/svg/settings/font_underline.svg';\nexport { default as alignLeft } from '../assets/svg/settings/align_left.svg';\nexport { default as alignCenter } from '../assets/svg/settings/align_center.svg';\nexport { default as alignRight } from '../assets/svg/settings/align_right.svg';\n\n// Chart Settings //\n\nexport { default as pie } from '../assets/svg/settings/chart_pie.svg';\nexport { default as bar } from '../assets/svg/settings/chart_bar.svg';\nexport { default as line } from '../assets/svg/settings/chart_line.svg';\nexport { default as basic } from '../assets/svg/settings/chart_basic.svg';\nexport { default as donut } from '../assets/svg/settings/chart_donut.svg';\nexport { default as grid } from '../assets/svg/settings/chart_grid.svg';\nexport { default as textGrid } from '../assets/svg/settings/chart_textGrid.svg';\nexport { default as column } from '../assets/svg/settings/chart_column.svg';\nexport { default as layout } from '../assets/svg/settings/layout.svg';\nexport { default as starRating } from '../assets/svg/star_rating.svg';\nexport { default as heartRating } from '../assets/svg/heart_rating.svg';\n\n// Shape Settings //\n\nexport { default as rectangleIcon } from '../assets/svg/settings/rectangle.svg';\nexport { default as ellipseIcon } from '../assets/svg/settings/ellipse.svg';\nexport { default as triangleIcon } from '../assets/svg/settings/triangle.svg';\nexport { default as starIcon } from '../assets/svg/settings/star.svg';\nexport { default as lineIcon } from '../assets/svg/settings/line.svg';\n\n// Element Menu //\n\nexport { default as duplicate } from '../assets/svg/duplicate.svg';\nexport { default as settings } from '../assets/svg/settings.svg';\n\n// Page Menu //\n\nexport { default as arrowDown } from '../assets/svg/arrow_down.svg';\nexport { default as arrowUp } from '../assets/svg/arrow_up.svg';\nexport { default as arrowLeft } from '../assets/svg/arrow_left.svg';\nexport { default as arrowRight } from '../assets/svg/arrow_right.svg';\nexport { default as duplicateLine } from '../assets/svg/page-actions/duplicate_line.svg';\nexport { default as plus } from '../assets/svg/plus.svg';\nexport { default as minus } from '../assets/svg/minus.svg';\nexport { default as trashLine } from '../assets/svg/page-actions/trash_line.svg';\nexport { default as pageSettings } from '../assets/svg/page_settings.svg';\n\n// Context Menu //\n\nexport { default as moveToFront } from '../assets/svg/contextmenu/moveToFront.svg';\nexport { default as moveToForward } from '../assets/svg/contextmenu/moveToForward.svg';\nexport { default as moveToBackward } from '../assets/svg/contextmenu/moveToBackward.svg';\nexport { default as moveToBack } from '../assets/svg/contextmenu/moveToBack.svg';\n\n// Presentation //\n\nexport { default as print } from '../assets/svg/presentation/print.svg';\nexport { default as download } from '../assets/svg/presentation/download.svg';\nexport { default as play } from '../assets/svg/presentation/play.svg';\nexport { default as enterFullscreen } from '../assets/svg/presentation/enter_fullscreen.svg';\nexport { default as exitFullscreen } from '../assets/svg/presentation/exit_fullscreen.svg';\nexport { default as pause } from '../assets/svg/presentation/pause.svg';\nexport { default as share } from '../assets/svg/presentation/share.svg';\nexport { default as attachment } from '../assets/svg/presentation/attachment.svg';\nexport { default as pen } from '../assets/svg/presentation/pen.svg';\n\n// Password Modal //\n\nexport { default as key } from '../assets/svg/presentation/key.svg';\nexport { default as eye } from '../assets/svg/presentation/eye.svg';\n\n// Placeholder //\n\nexport { default as piePlaceholder } from '../assets/svg/placeholder/pie.svg';\nexport { default as barPlaceholder } from '../assets/svg/placeholder/bar.svg';\nexport { default as linePlaceholder } from '../assets/svg/placeholder/bar.svg';\nexport { default as columnPlaceholder } from '../assets/svg/placeholder/column.svg';\nexport { default as basicPlaceholder } from '../assets/svg/placeholder/basic.svg';\nexport { default as donutPlaceholder } from '../assets/svg/placeholder/donut.svg';\nexport { default as textGridPlaceholder } from '../assets/svg/placeholder/grid.svg';\n\n// Placeholder //\n\n// Zoom //\n\nexport { default as fit } from '../assets/svg/fit_screen.svg';\n\n// Zoom //\n\n// Loading //\nexport { default as loadingCircle } from '../assets/svg/loading_circle.svg';\n\n// Error Boundary //\n\nexport { default as exclamationIcon } from '../assets/svg/exclamation.svg';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"icons.js","sources":["../../../src/utils/icons.js"],"sourcesContent":["// General //\n\nexport { default as down } from '../assets/svg/arrow_down.svg';\nexport { default as drag } from '../assets/svg/settings/drag.svg';\nexport { default as trash } from '../assets/svg/trash.svg';\nexport { default as close } from '../assets/svg/close.svg';\nexport { default as rotate } from '../assets/svg/rotate.svg';\nexport { default as customize } from '../assets/svg/customize.svg';\nexport { default as slides } from '../assets/svg/slides.svg';\nexport { default as allSlides } from '../assets/svg/all_slides.svg';\nexport { default as settingsToggle } from '../assets/svg/settings_toggle.svg';\n\n// Elements //\n\nexport { default as header } from '../assets/svg/toolbox/header.svg';\nexport { default as icon } from '../assets/svg/toolbox/icon.svg';\nexport { default as image } from '../assets/svg/toolbox/image.svg';\nexport { default as label } from '../assets/svg/toolbox/label.svg';\nexport { default as shapes } from '../assets/svg/toolbox/shapes.svg';\nexport { default as table } from '../assets/svg/toolbox/table.svg';\nexport { default as textElement } from '../assets/svg/toolbox/text_element.svg';\nexport { default as text } from '../assets/svg/toolbox/text.svg';\nexport { default as star } from '../assets/svg/toolbox/star.svg';\nexport { default as email } from '../assets/svg/toolbox/email.svg';\nexport { default as singleChoice } from '../assets/svg/toolbox/single_choice.svg';\nexport { default as multipleChoice } from '../assets/svg/toolbox/multiple_choice.svg';\nexport { default as lock } from '../assets/svg/settings/lock.svg';\nexport { default as unlock } from '../assets/svg/settings/unlock.svg';\n\n// Settings //\n\nexport { default as bold } from '../assets/svg/settings/font_bold.svg';\nexport { default as italic } from '../assets/svg/settings/font_italic.svg';\nexport { default as underline } from '../assets/svg/settings/font_underline.svg';\nexport { default as alignLeft } from '../assets/svg/settings/align_left.svg';\nexport { default as alignCenter } from '../assets/svg/settings/align_center.svg';\nexport { default as alignRight } from '../assets/svg/settings/align_right.svg';\n\n// Chart Settings //\n\nexport { default as pie } from '../assets/svg/settings/chart_pie.svg';\nexport { default as bar } from '../assets/svg/settings/chart_bar.svg';\nexport { default as line } from '../assets/svg/settings/chart_line.svg';\nexport { default as basic } from '../assets/svg/settings/chart_basic.svg';\nexport { default as donut } from '../assets/svg/settings/chart_donut.svg';\nexport { default as grid } from '../assets/svg/settings/chart_grid.svg';\nexport { default as textGrid } from '../assets/svg/settings/chart_textGrid.svg';\nexport { default as column } from '../assets/svg/settings/chart_column.svg';\nexport { default as layout } from '../assets/svg/settings/layout.svg';\nexport { default as starRating } from '../assets/svg/star_rating.svg';\nexport { default as heartRating } from '../assets/svg/heart_rating.svg';\n\n// Shape Settings //\n\nexport { default as rectangleIcon } from '../assets/svg/settings/rectangle.svg';\nexport { default as ellipseIcon } from '../assets/svg/settings/ellipse.svg';\nexport { default as triangleIcon } from '../assets/svg/settings/triangle.svg';\nexport { default as starIcon } from '../assets/svg/settings/star.svg';\nexport { default as lineIcon } from '../assets/svg/settings/line.svg';\n\n// Element Menu //\n\nexport { default as duplicate } from '../assets/svg/duplicate.svg';\nexport { default as settings } from '../assets/svg/settings.svg';\n\n// Page Menu //\n\nexport { default as arrowDown } from '../assets/svg/arrow_down.svg';\nexport { default as arrowUp } from '../assets/svg/arrow_up.svg';\nexport { default as arrowLeft } from '../assets/svg/arrow_left.svg';\nexport { default as arrowRight } from '../assets/svg/arrow_right.svg';\nexport { default as angleDown } from '../assets/svg/angle_down.svg';\nexport { default as angleUp } from '../assets/svg/angle_up.svg';\nexport { default as angleLeft } from '../assets/svg/angle_left.svg';\nexport { default as angleRight } from '../assets/svg/angle_right.svg';\nexport { default as duplicateLine } from '../assets/svg/page-actions/duplicate_line.svg';\nexport { default as plus } from '../assets/svg/plus.svg';\nexport { default as minus } from '../assets/svg/minus.svg';\nexport { default as trashLine } from '../assets/svg/page-actions/trash_line.svg';\nexport { default as pageSettings } from '../assets/svg/page_settings.svg';\n\n// Context Menu //\n\nexport { default as moveToFront } from '../assets/svg/contextmenu/moveToFront.svg';\nexport { default as moveToForward } from '../assets/svg/contextmenu/moveToForward.svg';\nexport { default as moveToBackward } from '../assets/svg/contextmenu/moveToBackward.svg';\nexport { default as moveToBack } from '../assets/svg/contextmenu/moveToBack.svg';\n\n// Presentation //\n\nexport { default as print } from '../assets/svg/presentation/print.svg';\nexport { default as download } from '../assets/svg/presentation/download.svg';\nexport { default as play } from '../assets/svg/presentation/play.svg';\nexport { default as enterFullscreen } from '../assets/svg/presentation/enter_fullscreen.svg';\nexport { default as exitFullscreen } from '../assets/svg/presentation/exit_fullscreen.svg';\nexport { default as pause } from '../assets/svg/presentation/pause.svg';\nexport { default as share } from '../assets/svg/presentation/share.svg';\nexport { default as attachment } from '../assets/svg/presentation/attachment.svg';\nexport { default as pen } from '../assets/svg/presentation/pen.svg';\n\n// Password Modal //\n\nexport { default as key } from '../assets/svg/presentation/key.svg';\nexport { default as eye } from '../assets/svg/presentation/eye.svg';\n\n// Placeholder //\n\nexport { default as piePlaceholder } from '../assets/svg/placeholder/pie.svg';\nexport { default as barPlaceholder } from '../assets/svg/placeholder/bar.svg';\nexport { default as linePlaceholder } from '../assets/svg/placeholder/bar.svg';\nexport { default as columnPlaceholder } from '../assets/svg/placeholder/column.svg';\nexport { default as basicPlaceholder } from '../assets/svg/placeholder/basic.svg';\nexport { default as donutPlaceholder } from '../assets/svg/placeholder/donut.svg';\nexport { default as textGridPlaceholder } from '../assets/svg/placeholder/grid.svg';\n\n// Placeholder //\n\n// Zoom //\n\nexport { default as fit } from '../assets/svg/fit_screen.svg';\n\n// Zoom //\n\n// Loading //\nexport { default as loadingCircle } from '../assets/svg/loading_circle.svg';\n\n// Error Boundary //\n\nexport { default as exclamationIcon } from '../assets/svg/exclamation.svg';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA"}
|
|
@@ -7,7 +7,7 @@ import { useBuilderStore } from '../contexts/BuilderContext.js';
|
|
|
7
7
|
import { usePropStore } from '../contexts/PropContext.js';
|
|
8
8
|
import { findItemById, getMostVisiblePage, getDimensions } from './functions.js';
|
|
9
9
|
import { useSelectedElements, useEventListener } from './hooks.js';
|
|
10
|
-
import { EVENT_IGNORED_ROLES } from '../constants/eventIgnoredRoles.js';
|
|
10
|
+
import { EVENT_IGNORED_ROLES, EVENT_IGNORED_FIELDS } from '../constants/eventIgnoredRoles.js';
|
|
11
11
|
import generateId from './generateId.js';
|
|
12
12
|
|
|
13
13
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -110,6 +110,7 @@ var useKeyboardActions = function useKeyboardActions() {
|
|
|
110
110
|
var onItemRemoveFromPage = function onItemRemoveFromPage(e) {
|
|
111
111
|
// Firefox updates browser history on backspace
|
|
112
112
|
e.preventDefault();
|
|
113
|
+
if (isRightPanelOpen) return;
|
|
113
114
|
if (isMultipleItemSelected) return;
|
|
114
115
|
|
|
115
116
|
if (foundItem.isLocked) {
|
|
@@ -232,6 +233,8 @@ var useKeyboardActions = function useKeyboardActions() {
|
|
|
232
233
|
var shouldSuppressKeyboardEvent = function shouldSuppressKeyboardEvent(e) {
|
|
233
234
|
return EVENT_IGNORED_ROLES.some(function (role) {
|
|
234
235
|
return e.target.closest("[role=".concat(role, "]"));
|
|
236
|
+
}) || EVENT_IGNORED_FIELDS.some(function (field) {
|
|
237
|
+
return e.target.closest(field);
|
|
235
238
|
});
|
|
236
239
|
};
|
|
237
240
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKeyboardActions.js","sources":["../../../src/utils/useKeyboardActions.js"],"sourcesContent":["/* eslint-disable complexity */\nimport { useRef, useState } from 'react';\nimport { useBuilderStore } from '../contexts/BuilderContext';\nimport { usePropStore } from '../contexts/PropContext';\nimport { findItemById, getDimensions, getMostVisiblePage } from './functions';\nimport { useEventListener, useSelectedElements } from './hooks';\nimport { EVENT_IGNORED_ROLES } from '../constants/eventIgnoredRoles';\nimport generateId from './generateId';\n\nconst useKeyboardActions = () => {\n const [itemToPaste, setItemToPaste] = useState(null);\n const keyDownCount = useRef(null);\n\n const activeElements = useBuilderStore(state => state.activeElements);\n const isRightPanelOpen = useBuilderStore(state => state.isRightPanelOpen);\n const setActiveElements = useBuilderStore(state => state.setActiveElements);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n const resetActiveElements = useBuilderStore(state => state.resetActiveElements);\n\n const pages = usePropStore(state => state.pages);\n const onItemAdd = usePropStore(state => state.onItemAdd);\n const onItemRemove = usePropStore(state => state.onItemRemove);\n const onItemChange = usePropStore(state => state.onItemChange);\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n\n const isMultipleItemSelected = activeElements.length > 1;\n\n const foundItem = findItemById(activeElements.length ? activeElements[0] : null, pages);\n\n const selectedItems = useSelectedElements();\n const moveItemWithKeyboard = (event, direction, value) => {\n event.preventDefault();\n selectedItems.forEach(item => {\n if (item.isLocked) {\n return false;\n }\n onItemChange(\n { id: item.id },\n {\n ...getDimensions(item),\n [direction]: item[direction] + value,\n pageID: item.pageID,\n },\n );\n });\n };\n\n const selectNextOrPrevElement = (event, deletedItem) => {\n if (event.preventDefault) event.preventDefault();\n const referenceItem = deletedItem ? deletedItem : foundItem;\n\n const page = pages.find(_page => _page.id === referenceItem.pageID);\n if (!page || (page && !page.items.length)) return resetActiveElements();\n const { items } = page;\n\n const currentIndex = items.findIndex(item => item.id === referenceItem.id);\n\n // Pages are not updated in time so here is an unnecessary check\n if (items.length === 1 && deletedItem) {\n return resetActiveElements();\n }\n\n if (event.shiftKey) {\n if (items[currentIndex - 1]) setActiveElements(items[currentIndex - 1].id);\n else setActiveElements(items[items.length - 1].id);\n } else if (items[currentIndex + 1]) {\n setActiveElements(items[currentIndex + 1].id);\n } else setActiveElements(items[0].id);\n };\n\n const onItemRemoveFromPage = e => {\n // Firefox updates browser history on backspace\n e.preventDefault();\n if (isMultipleItemSelected) return;\n if (foundItem.isLocked) {\n return false;\n }\n resetActiveElements();\n onItemRemove(foundItem);\n selectNextOrPrevElement({ shiftKey: false }, foundItem);\n onAnEventTrigger('removeItem', foundItem.itemType);\n };\n\n const handlePaste = () => {\n if (isMultipleItemSelected) return;\n const itemID = generateId();\n const pageID = getMostVisiblePage(true);\n const offset = itemToPaste.pageID === pageID ? 50 : 0;\n\n const item = {\n ...itemToPaste,\n id: itemID,\n left: itemToPaste.left + offset,\n pageID,\n top: itemToPaste.top + offset,\n };\n\n onItemAdd(item);\n\n onAnEventTrigger('pasteItem', itemToPaste.itemType);\n setActiveElements(itemID);\n // set as last reference to paste\n setItemToPaste(item);\n };\n\n const keyboardActions = event => {\n const {\n key,\n metaKey,\n shiftKey,\n } = event;\n\n if (metaKey) {\n if (key === 'l') {\n // Lock\n if (isMultipleItemSelected) return;\n event.preventDefault(); // Dont focus to URL bar\n onAnEventTrigger(\n foundItem.isLocked ? 'unlockReportItem' : 'lockReportItem',\n foundItem.itemType,\n );\n onItemChange(\n { id: foundItem.id },\n { isLocked: foundItem.isLocked ? false : true },\n );\n return;\n }\n\n if (key === 'c' || key === 'x') {\n if (isMultipleItemSelected) return;\n // Copy or Cut\n if (key === 'x') {\n onItemRemoveFromPage(event);\n onAnEventTrigger('cutItem', foundItem.itemType);\n } else {\n onAnEventTrigger('copyItem', foundItem.itemType);\n }\n\n setItemToPaste(foundItem);\n return;\n }\n\n if (foundItem && key === 'd') {\n if (isMultipleItemSelected) return;\n // Duplicate\n event.preventDefault();\n const itemID = generateId();\n onItemAdd({\n ...foundItem,\n id: itemID,\n left: foundItem.left + 50,\n top: foundItem.top + 50,\n });\n onAnEventTrigger('duplicateItem', foundItem.itemType);\n setActiveElements(itemID);\n if (!isRightPanelOpen) {\n setIsRightPanelOpen(true);\n }\n return;\n }\n }\n\n keyDownCount.current++;\n const movementValue = shiftKey ? 10 : 1 + keyDownCount.current;\n\n // Others\n switch (key) {\n case 'Backspace': return onItemRemoveFromPage(event);\n case 'Delete': return onItemRemoveFromPage(event);\n case 'Escape': return resetActiveElements();\n case 'ArrowLeft': return moveItemWithKeyboard(event, 'left', -movementValue);\n case 'ArrowUp': return moveItemWithKeyboard(event, 'top', -movementValue);\n case 'ArrowRight': return moveItemWithKeyboard(event, 'left', movementValue);\n case 'ArrowDown': return moveItemWithKeyboard(event, 'top', movementValue);\n case 'Tab': return selectNextOrPrevElement(event);\n default:\n }\n };\n\n const shouldSuppressKeyboardEvent = e => (\n EVENT_IGNORED_ROLES.some(role => e.target.closest(`[role=${role}]`))\n );\n\n const handleKeyboardEvent = e => {\n const shouldPaste = itemToPaste && e.key === 'v' && e.metaKey;\n\n if (shouldSuppressKeyboardEvent(e)) {\n return;\n }\n\n if (activeElements.length && !shouldPaste) {\n const arrowKeyCodes = ['ArrowLeft', 'ArrowUp', 'ArrowDown', 'ArrowBottom'];\n if (arrowKeyCodes.includes(e.key)) e.preventDefault();\n keyboardActions(e);\n } else if (shouldPaste) {\n handlePaste();\n }\n };\n\n useEventListener('keydown', handleKeyboardEvent);\n useEventListener('keyup', () => { keyDownCount.current = 0; });\n};\n\nexport default useKeyboardActions;\n"],"names":["useKeyboardActions","useState","itemToPaste","setItemToPaste","keyDownCount","useRef","activeElements","useBuilderStore","state","isRightPanelOpen","setActiveElements","setIsRightPanelOpen","resetActiveElements","pages","usePropStore","onItemAdd","onItemRemove","onItemChange","onAnEventTrigger","isMultipleItemSelected","length","foundItem","findItemById","selectedItems","useSelectedElements","moveItemWithKeyboard","event","direction","value","preventDefault","forEach","item","isLocked","id","getDimensions","pageID","selectNextOrPrevElement","deletedItem","referenceItem","page","find","_page","items","currentIndex","findIndex","shiftKey","onItemRemoveFromPage","e","itemType","handlePaste","itemID","generateId","getMostVisiblePage","offset","left","top","keyboardActions","key","metaKey","current","movementValue","shouldSuppressKeyboardEvent","EVENT_IGNORED_ROLES","some","role","target","closest","handleKeyboardEvent","shouldPaste","arrowKeyCodes","includes","useEventListener"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useKeyboardActions.js","sources":["../../../src/utils/useKeyboardActions.js"],"sourcesContent":["/* eslint-disable complexity */\nimport { useRef, useState } from 'react';\nimport { useBuilderStore } from '../contexts/BuilderContext';\nimport { usePropStore } from '../contexts/PropContext';\nimport { findItemById, getDimensions, getMostVisiblePage } from './functions';\nimport { useEventListener, useSelectedElements } from './hooks';\nimport { EVENT_IGNORED_FIELDS, EVENT_IGNORED_ROLES } from '../constants/eventIgnoredRoles';\nimport generateId from './generateId';\n\nconst useKeyboardActions = () => {\n const [itemToPaste, setItemToPaste] = useState(null);\n const keyDownCount = useRef(null);\n\n const activeElements = useBuilderStore(state => state.activeElements);\n const isRightPanelOpen = useBuilderStore(state => state.isRightPanelOpen);\n const setActiveElements = useBuilderStore(state => state.setActiveElements);\n const setIsRightPanelOpen = useBuilderStore(state => state.setIsRightPanelOpen);\n const resetActiveElements = useBuilderStore(state => state.resetActiveElements);\n\n const pages = usePropStore(state => state.pages);\n const onItemAdd = usePropStore(state => state.onItemAdd);\n const onItemRemove = usePropStore(state => state.onItemRemove);\n const onItemChange = usePropStore(state => state.onItemChange);\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n\n const isMultipleItemSelected = activeElements.length > 1;\n\n const foundItem = findItemById(activeElements.length ? activeElements[0] : null, pages);\n\n const selectedItems = useSelectedElements();\n const moveItemWithKeyboard = (event, direction, value) => {\n event.preventDefault();\n selectedItems.forEach(item => {\n if (item.isLocked) {\n return false;\n }\n onItemChange(\n { id: item.id },\n {\n ...getDimensions(item),\n [direction]: item[direction] + value,\n pageID: item.pageID,\n },\n );\n });\n };\n\n const selectNextOrPrevElement = (event, deletedItem) => {\n if (event.preventDefault) event.preventDefault();\n const referenceItem = deletedItem ? deletedItem : foundItem;\n\n const page = pages.find(_page => _page.id === referenceItem.pageID);\n if (!page || (page && !page.items.length)) return resetActiveElements();\n const { items } = page;\n\n const currentIndex = items.findIndex(item => item.id === referenceItem.id);\n\n // Pages are not updated in time so here is an unnecessary check\n if (items.length === 1 && deletedItem) {\n return resetActiveElements();\n }\n\n if (event.shiftKey) {\n if (items[currentIndex - 1]) setActiveElements(items[currentIndex - 1].id);\n else setActiveElements(items[items.length - 1].id);\n } else if (items[currentIndex + 1]) {\n setActiveElements(items[currentIndex + 1].id);\n } else setActiveElements(items[0].id);\n };\n\n const onItemRemoveFromPage = e => {\n // Firefox updates browser history on backspace\n e.preventDefault();\n if (isRightPanelOpen) return;\n if (isMultipleItemSelected) return;\n if (foundItem.isLocked) {\n return false;\n }\n resetActiveElements();\n onItemRemove(foundItem);\n selectNextOrPrevElement({ shiftKey: false }, foundItem);\n onAnEventTrigger('removeItem', foundItem.itemType);\n };\n\n const handlePaste = () => {\n if (isMultipleItemSelected) return;\n const itemID = generateId();\n const pageID = getMostVisiblePage(true);\n const offset = itemToPaste.pageID === pageID ? 50 : 0;\n\n const item = {\n ...itemToPaste,\n id: itemID,\n left: itemToPaste.left + offset,\n pageID,\n top: itemToPaste.top + offset,\n };\n\n onItemAdd(item);\n\n onAnEventTrigger('pasteItem', itemToPaste.itemType);\n setActiveElements(itemID);\n // set as last reference to paste\n setItemToPaste(item);\n };\n\n const keyboardActions = event => {\n const {\n key,\n metaKey,\n shiftKey,\n } = event;\n\n if (metaKey) {\n if (key === 'l') {\n // Lock\n if (isMultipleItemSelected) return;\n event.preventDefault(); // Dont focus to URL bar\n onAnEventTrigger(\n foundItem.isLocked ? 'unlockReportItem' : 'lockReportItem',\n foundItem.itemType,\n );\n onItemChange(\n { id: foundItem.id },\n { isLocked: foundItem.isLocked ? false : true },\n );\n return;\n }\n\n if (key === 'c' || key === 'x') {\n if (isMultipleItemSelected) return;\n // Copy or Cut\n if (key === 'x') {\n onItemRemoveFromPage(event);\n onAnEventTrigger('cutItem', foundItem.itemType);\n } else {\n onAnEventTrigger('copyItem', foundItem.itemType);\n }\n\n setItemToPaste(foundItem);\n return;\n }\n\n if (foundItem && key === 'd') {\n if (isMultipleItemSelected) return;\n // Duplicate\n event.preventDefault();\n const itemID = generateId();\n onItemAdd({\n ...foundItem,\n id: itemID,\n left: foundItem.left + 50,\n top: foundItem.top + 50,\n });\n onAnEventTrigger('duplicateItem', foundItem.itemType);\n setActiveElements(itemID);\n if (!isRightPanelOpen) {\n setIsRightPanelOpen(true);\n }\n return;\n }\n }\n\n keyDownCount.current++;\n const movementValue = shiftKey ? 10 : 1 + keyDownCount.current;\n\n // Others\n switch (key) {\n case 'Backspace': return onItemRemoveFromPage(event);\n case 'Delete': return onItemRemoveFromPage(event);\n case 'Escape': return resetActiveElements();\n case 'ArrowLeft': return moveItemWithKeyboard(event, 'left', -movementValue);\n case 'ArrowUp': return moveItemWithKeyboard(event, 'top', -movementValue);\n case 'ArrowRight': return moveItemWithKeyboard(event, 'left', movementValue);\n case 'ArrowDown': return moveItemWithKeyboard(event, 'top', movementValue);\n case 'Tab': return selectNextOrPrevElement(event);\n default:\n }\n };\n\n const shouldSuppressKeyboardEvent = e => (\n EVENT_IGNORED_ROLES.some(role => e.target.closest(`[role=${role}]`))\n || EVENT_IGNORED_FIELDS.some(field => e.target.closest(field))\n );\n\n const handleKeyboardEvent = e => {\n const shouldPaste = itemToPaste && e.key === 'v' && e.metaKey;\n\n if (shouldSuppressKeyboardEvent(e)) {\n return;\n }\n\n if (activeElements.length && !shouldPaste) {\n const arrowKeyCodes = ['ArrowLeft', 'ArrowUp', 'ArrowDown', 'ArrowBottom'];\n if (arrowKeyCodes.includes(e.key)) e.preventDefault();\n keyboardActions(e);\n } else if (shouldPaste) {\n handlePaste();\n }\n };\n\n useEventListener('keydown', handleKeyboardEvent);\n useEventListener('keyup', () => { keyDownCount.current = 0; });\n};\n\nexport default useKeyboardActions;\n"],"names":["useKeyboardActions","useState","itemToPaste","setItemToPaste","keyDownCount","useRef","activeElements","useBuilderStore","state","isRightPanelOpen","setActiveElements","setIsRightPanelOpen","resetActiveElements","pages","usePropStore","onItemAdd","onItemRemove","onItemChange","onAnEventTrigger","isMultipleItemSelected","length","foundItem","findItemById","selectedItems","useSelectedElements","moveItemWithKeyboard","event","direction","value","preventDefault","forEach","item","isLocked","id","getDimensions","pageID","selectNextOrPrevElement","deletedItem","referenceItem","page","find","_page","items","currentIndex","findIndex","shiftKey","onItemRemoveFromPage","e","itemType","handlePaste","itemID","generateId","getMostVisiblePage","offset","left","top","keyboardActions","key","metaKey","current","movementValue","shouldSuppressKeyboardEvent","EVENT_IGNORED_ROLES","some","role","target","closest","EVENT_IGNORED_FIELDS","field","handleKeyboardEvent","shouldPaste","arrowKeyCodes","includes","useEventListener"],"mappings":"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"}
|