@opentiny/tiny-engine-toolbar-save 2.1.0 → 2.2.0-rc.0

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/LICENSE CHANGED
@@ -1,22 +1,22 @@
1
- MIT License
2
-
3
- Copyright (c) 2023 - present TinyEngine Authors.
4
- Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd.
5
-
6
- Permission is hereby granted, free of charge, to any person obtaining a copy
7
- of this software and associated documentation files (the "Software"), to deal
8
- in the Software without restriction, including without limitation the rights
9
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- copies of the Software, and to permit persons to whom the Software is
11
- furnished to do so, subject to the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be included in all
14
- copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2023 - present TinyEngine Authors.
4
+ Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd.
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import "./style.css";
2
- import { reactive as B, ref as P, onUnmounted as N, resolveComponent as m, openBlock as x, createElementBlock as h, createVNode as c, withCtx as r, createTextVNode as k, createBlock as O, createCommentVNode as M, createElementVNode as g } from "vue";
3
- import { VueMonaco as U, ToolbarBase as D } from "@opentiny/tiny-engine-common";
4
- import { Button as L, Popover as G, DialogBox as R, Checkbox as j, Select as J } from "@opentiny/vue";
5
- import { usePage as q, useCanvas as C, getOptions as z, useNotify as T, useLayout as F, getMetaApi as H, META_APP as K, useBlock as Q } from "@opentiny/tiny-engine-meta-register";
6
- import { constants as W } from "@opentiny/tiny-engine-utils";
2
+ import { reactive as x, ref as P, onMounted as w, onUnmounted as D, resolveComponent as m, openBlock as A, createElementBlock as L, createVNode as d, withCtx as r, createElementVNode as g, createTextVNode as k, createBlock as M, createCommentVNode as U } from "vue";
3
+ import { VueMonaco as G, ToolbarBase as J } from "@opentiny/tiny-engine-common";
4
+ import { Button as R, Popover as j, DialogBox as Y, Checkbox as I, Select as q } from "@opentiny/vue";
5
+ import { usePage as z, useCanvas as S, getOptions as F, useNotify as C, useLayout as H, getMetaApi as K, META_APP as Q, useBlock as W } from "@opentiny/tiny-engine-meta-register";
6
+ import { constants as B } from "@opentiny/tiny-engine-utils";
7
7
  import { handlePageUpdate as X } from "@opentiny/tiny-engine-common/js/http";
8
- const V = {
8
+ const E = {
9
9
  id: "engine.toolbars.save",
10
10
  type: "toolbars",
11
11
  title: "save",
@@ -15,87 +15,100 @@ const V = {
15
15
  },
16
16
  renderType: "button"
17
17
  }
18
- }, { PAGE_STATUS: u } = W, _ = B({
18
+ }, { PAGE_STATUS: v, AUTO_SAVED: V } = B, _ = x({
19
19
  visible: !1,
20
20
  code: "",
21
21
  originalCode: "",
22
22
  disabled: !1
23
- }), y = P(!1), Y = async (n) => {
23
+ }), y = P(!1), Z = async (n) => {
24
24
  var i;
25
- const e = H(K.BlockManage), { getCurrentBlock: t } = Q(), o = t();
26
- o.label = n.fileName, o.content = n, y.value = !0, o.screenshot = await e.getBlockBase64(), await ((i = e.saveBlock) == null ? void 0 : i.call(e, o)), y.value = !1;
27
- }, Z = async (n) => {
28
- const { currentPage: e } = C().pageState, t = {
25
+ const e = K(Q.BlockManage), { getCurrentBlock: o } = W(), t = o();
26
+ t.label = n.fileName, t.content = n, y.value = !0, t.screenshot = await e.getBlockBase64(), await ((i = e.saveBlock) == null ? void 0 : i.call(e, t)), y.value = !1;
27
+ }, $ = async (n) => {
28
+ const { currentPage: e } = S().pageState, o = {
29
29
  page_content: n
30
30
  };
31
- y.value = !0, await X(e.id, { ...e, ...t }, !1, !0), y.value = !1;
32
- }, S = (n) => {
33
- const { pageSettingState: e, isTemporaryPage: t } = q(), { isBlock: o, canvasApi: i, pageState: s, resetBlockCanvasState: d, resetPageCanvasState: l } = C(), a = JSON.parse(n), { selectNode: v } = i.value;
34
- if (o() ? d({ ...s, pageSchema: a }) : l({ ...s, pageSchema: a }), e != null && e.isAIPage) {
35
- t.saved && (t.saved = !1), t.saved = !0;
31
+ y.value = !0, await X(e.id, { ...e, ...o }, !1, !0), y.value = !1;
32
+ }, T = (n) => {
33
+ const { pageSettingState: e, isTemporaryPage: o } = z(), { isBlock: t, canvasApi: i, pageState: a, resetBlockCanvasState: u, resetPageCanvasState: l } = S(), s = JSON.parse(n), { selectNode: c } = i.value;
34
+ if (t() ? u({ ...a, pageSchema: s }) : l({ ...a, pageSchema: s }), e != null && e.isAIPage) {
35
+ o.saved && (o.saved = !1), o.saved = !0;
36
36
  const p = "page_content";
37
- return e.currentPageData[p] = a, Promise.resolve();
37
+ return e.currentPageData[p] = s, Promise.resolve();
38
38
  }
39
- return v(null), o() ? Y(a) : Z(a);
40
- }, A = async () => {
39
+ return c(null), t() ? Z(s) : $(s);
40
+ }, N = async () => {
41
41
  var p;
42
- const { isSaved: n, getSchema: e } = C();
42
+ const { isSaved: n, getSchema: e } = S();
43
43
  if (n() || _.disabled)
44
44
  return;
45
- const { beforeSave: t, saveMethod: o, saved: i } = z(V.id);
45
+ const { beforeSave: o, saveMethod: t, saved: i } = F(E.id);
46
46
  try {
47
- if (typeof t == "function" && await t(), typeof o == "function" && await o())
47
+ if (typeof o == "function" && await o(), typeof t == "function" && await t())
48
48
  return;
49
49
  } catch (f) {
50
- T({
50
+ C({
51
51
  type: "error",
52
52
  message: `Error in saving: ${f}`
53
53
  });
54
54
  }
55
- const s = (p = F().layoutState) == null ? void 0 : p.pageStatus, d = s == null ? void 0 : s.state, l = s == null ? void 0 : s.data, a = {
56
- [u.Release]: "当前页面未锁定,请先锁定再保存",
57
- [u.Empty]: "当前应用无页面,请先新建页面再保存",
58
- [u.Guest]: "官网演示应用不能保存页面,如需体验请切换应用",
59
- [u.Lock]: `当前页面被 ${l == null ? void 0 : l.username} ${l == null ? void 0 : l.resetPasswordToken} 锁定,如需编辑请先联系他解锁文件,然后再锁定该页面后编辑!`
55
+ const a = (p = H().layoutState) == null ? void 0 : p.pageStatus, u = a == null ? void 0 : a.state, l = a == null ? void 0 : a.data, s = {
56
+ [v.Release]: "当前页面未锁定,请先锁定再保存",
57
+ [v.Empty]: "当前应用无页面,请先新建页面再保存",
58
+ [v.Guest]: "官网演示应用不能保存页面,如需体验请切换应用",
59
+ [v.Lock]: `当前页面被 ${l == null ? void 0 : l.username} ${l == null ? void 0 : l.resetPasswordToken} 锁定,如需编辑请先联系他解锁文件,然后再锁定该页面后编辑!`
60
60
  };
61
- if ([u.Release, u.Empty, u.Guest, u.Lock].includes(d)) {
62
- T({
61
+ if ([v.Release, v.Empty, v.Guest, v.Lock].includes(u)) {
62
+ C({
63
63
  type: "error",
64
64
  title: "保存失败",
65
- message: a[d]
65
+ message: s[u]
66
66
  });
67
67
  return;
68
68
  }
69
69
  _.disabled = !0;
70
- const v = e();
71
- _.code = JSON.stringify(v || {}, null, 2), S(_.code).finally(() => {
70
+ const c = e();
71
+ _.code = JSON.stringify(c || {}, null, 2), T(_.code).finally(() => {
72
72
  if (_.disabled = !1, typeof i == "function")
73
73
  try {
74
74
  i();
75
75
  } catch (f) {
76
- T({
76
+ C({
77
77
  type: "error",
78
78
  message: `Error in saved: ${f}`
79
79
  });
80
80
  }
81
81
  });
82
- }, I = (n, e) => {
83
- const t = n.__vccOpts || n;
84
- for (const [o, i] of e)
85
- t[o] = i;
86
- return t;
87
- }, $ = {
88
- saveCommon: S,
89
- openCommon: A
90
- }, ee = {
82
+ }, ee = () => {
83
+ try {
84
+ const n = localStorage.getItem(V);
85
+ return JSON.parse(n) ?? !1;
86
+ } catch {
87
+ return !1;
88
+ }
89
+ }, te = (n) => {
90
+ try {
91
+ return localStorage.setItem(V, JSON.stringify(n)), !0;
92
+ } catch {
93
+ return !1;
94
+ }
95
+ }, oe = (n, e) => {
96
+ const o = n.__vccOpts || n;
97
+ for (const [t, i] of e)
98
+ o[t] = i;
99
+ return o;
100
+ }, { OPEN_DELAY: ne } = B, ae = {
101
+ saveCommon: T,
102
+ openCommon: N
103
+ }, se = {
91
104
  components: {
92
- VueMonaco: U,
93
- TinyButton: L,
94
- TinyPopover: G,
95
- TinyDialogBox: R,
96
- TinyCheckbox: j,
97
- TinySelect: J,
98
- ToolbarBase: D
105
+ VueMonaco: G,
106
+ TinyButton: R,
107
+ TinyPopover: j,
108
+ TinyDialogBox: Y,
109
+ TinyCheckbox: I,
110
+ TinySelect: q,
111
+ ToolbarBase: J
99
112
  },
100
113
  props: {
101
114
  iconExpand: {
@@ -108,11 +121,11 @@ const V = {
108
121
  }
109
122
  },
110
123
  setup() {
111
- const { isSaved: n } = C(), e = [
124
+ const { isSaved: n } = S(), e = [
112
125
  { value: 5, label: "5分钟" },
113
126
  { value: 10, label: "10分钟" },
114
127
  { value: 15, label: "15分钟" }
115
- ], t = B({
128
+ ], o = x({
116
129
  visible: !1,
117
130
  code: "",
118
131
  originalCode: "",
@@ -120,148 +133,152 @@ const V = {
120
133
  timeValue: 5,
121
134
  checked: !1,
122
135
  preservationTime: null
123
- }), o = P(null), i = () => {
124
- t.visible = !1, t.originalCode = "";
125
- }, s = () => {
126
- y.value || A();
127
- }, d = () => {
128
- S();
136
+ }), t = P(null), i = () => {
137
+ o.visible = !1, o.originalCode = "";
138
+ }, a = () => {
139
+ y.value || N();
140
+ }, u = () => {
141
+ T();
129
142
  }, l = {
130
143
  language: "json",
131
144
  lineNumbers: !0,
132
145
  minimap: {
133
146
  enabled: !1
134
147
  }
135
- }, a = () => {
136
- clearTimeout(t.preservationTime), t.preservationTime = setTimeout(() => {
137
- s(), a();
138
- }, t.timeValue * 60 * 1e3);
139
- }, v = () => {
140
- t.checked ? a() : clearTimeout(t.preservationTime);
148
+ }, s = () => {
149
+ clearTimeout(o.preservationTime), o.preservationTime = setTimeout(() => {
150
+ a(), s();
151
+ }, o.timeValue * 60 * 1e3);
152
+ }, c = () => {
153
+ te(o.checked), o.checked ? s() : clearTimeout(o.preservationTime);
141
154
  };
142
- return N(() => {
143
- clearTimeout(t.preservationTime);
155
+ return w(() => {
156
+ o.checked = ee(), o.checked && s();
157
+ }), D(() => {
158
+ clearTimeout(o.preservationTime);
144
159
  }), {
145
- state: t,
146
- editor: o,
160
+ state: o,
161
+ editor: t,
147
162
  editorOptions: l,
148
163
  isLoading: y,
149
164
  isSaved: n,
150
165
  close: i,
151
- openApi: s,
152
- saveApi: d,
166
+ openApi: a,
167
+ saveApi: u,
153
168
  delayOptions: e,
154
- autoSave: v
169
+ saveConfig: c,
170
+ OPEN_DELAY: ne
155
171
  };
156
172
  }
157
- }, oe = { class: "toolbar-save" }, te = { class: "save-style" }, ne = { class: "save-time" }, ae = { class: "save-button-group" };
158
- function se(n, e, t, o, i, s) {
159
- const d = m("svg-icon"), l = m("vue-monaco"), a = m("tiny-button"), v = m("tiny-dialog-box"), p = m("toolbar-base"), f = m("tiny-checkbox"), w = m("tiny-select"), E = m("tiny-popover");
160
- return x(), h("div", oe, [
161
- c(E, {
162
- "visible-arrow": !1,
163
- width: "203",
164
- trigger: "hover"
173
+ }, ie = { class: "toolbar-save" }, le = { class: "save-style" }, re = { class: "save-time" }, ce = { class: "save-button-group" };
174
+ function de(n, e, o, t, i, a) {
175
+ const u = m("svg-icon"), l = m("tiny-checkbox"), s = m("tiny-select"), c = m("tiny-button"), p = m("tiny-popover"), f = m("vue-monaco"), O = m("tiny-dialog-box"), h = m("toolbar-base");
176
+ return A(), L("div", ie, [
177
+ d(h, {
178
+ content: t.isLoading ? "保存中" : "保存",
179
+ icon: o.options.icon.default || o.options.icon,
180
+ options: { ...o.options, showDots: !t.isSaved() },
181
+ onClickApi: t.openApi
165
182
  }, {
166
- reference: r(() => [
167
- c(p, {
168
- content: o.isLoading ? "保存中" : "保存",
169
- icon: t.options.icon.default || t.options.icon,
170
- options: { ...t.options, showDots: !o.isSaved() },
171
- onClickApi: o.openApi
183
+ button: r(() => [
184
+ d(p, {
185
+ "visible-arrow": !1,
186
+ width: "203",
187
+ trigger: "click",
188
+ "open-delay": t.OPEN_DELAY.Default
172
189
  }, {
173
- button: r(() => [
174
- c(d, { name: t.iconExpand }, null, 8, ["name"])
190
+ reference: r(() => [
191
+ d(u, { name: o.iconExpand }, null, 8, ["name"])
175
192
  ]),
176
193
  default: r(() => [
177
- c(v, {
178
- class: "dialog-box",
179
- modal: !1,
180
- fullscreen: !0,
181
- "append-to-body": !0,
182
- visible: o.state.visible,
183
- title: "Schema 本地与线上差异",
184
- "onUpdate:visible": e[0] || (e[0] = (b) => o.state.visible = b)
185
- }, {
186
- footer: r(() => [
187
- c(a, { onClick: o.close }, {
188
- default: r(() => e[3] || (e[3] = [
189
- k(" 消")
190
- ])),
191
- _: 1
192
- }, 8, ["onClick"]),
193
- c(a, {
194
+ g("div", le, [
195
+ e[6] || (e[6] = g("div", { class: "save-setting" }, "保存设置", -1)),
196
+ d(l, {
197
+ modelValue: t.state.checked,
198
+ "onUpdate:modelValue": e[0] || (e[0] = (b) => t.state.checked = b),
199
+ name: "tiny-checkbox"
200
+ }, {
201
+ default: r(() => e[3] || (e[3] = [
202
+ k("自动保存")
203
+ ])),
204
+ _: 1
205
+ }, 8, ["modelValue"]),
206
+ g("div", re, [
207
+ e[4] || (e[4] = g("div", { class: "save-time-label" }, "保存间隔", -1)),
208
+ d(s, {
209
+ modelValue: t.state.timeValue,
210
+ "onUpdate:modelValue": e[1] || (e[1] = (b) => t.state.timeValue = b),
211
+ options: t.delayOptions,
212
+ disabled: !t.state.checked,
213
+ autocomplete: ""
214
+ }, null, 8, ["modelValue", "options", "disabled"])
215
+ ]),
216
+ g("div", ce, [
217
+ d(c, {
194
218
  type: "primary",
195
- onClick: o.saveApi
219
+ onClick: t.saveConfig
196
220
  }, {
197
- default: r(() => e[4] || (e[4] = [
198
- k("保 存")
221
+ default: r(() => e[5] || (e[5] = [
222
+ k("设置并保存")
199
223
  ])),
200
224
  _: 1
201
225
  }, 8, ["onClick"])
202
- ]),
203
- default: r(() => [
204
- o.state.visible ? (x(), O(l, {
205
- key: 0,
206
- ref: "editor",
207
- class: "monaco-editor",
208
- diffEditor: !0,
209
- options: o.editorOptions,
210
- value: o.state.code,
211
- original: o.state.originalCode
212
- }, null, 8, ["options", "value", "original"])) : M("", !0)
213
- ]),
214
- _: 1
215
- }, 8, ["visible"])
226
+ ])
227
+ ])
216
228
  ]),
217
229
  _: 1
218
- }, 8, ["content", "icon", "options", "onClickApi"])
230
+ }, 8, ["open-delay"])
219
231
  ]),
220
232
  default: r(() => [
221
- g("div", te, [
222
- e[8] || (e[8] = g("div", { class: "save-setting" }, "保存设置", -1)),
223
- c(f, {
224
- modelValue: o.state.checked,
225
- "onUpdate:modelValue": e[1] || (e[1] = (b) => o.state.checked = b),
226
- name: "tiny-checkbox"
227
- }, {
228
- default: r(() => e[5] || (e[5] = [
229
- k("自动保存")
230
- ])),
231
- _: 1
232
- }, 8, ["modelValue"]),
233
- g("div", ne, [
234
- e[6] || (e[6] = g("div", { class: "save-time-label" }, "保存间隔", -1)),
235
- c(w, {
236
- modelValue: o.state.timeValue,
237
- "onUpdate:modelValue": e[2] || (e[2] = (b) => o.state.timeValue = b),
238
- options: o.delayOptions,
239
- disabled: !o.state.checked,
240
- autocomplete: ""
241
- }, null, 8, ["modelValue", "options", "disabled"])
242
- ]),
243
- g("div", ae, [
244
- c(a, {
233
+ d(O, {
234
+ class: "dialog-box",
235
+ modal: !1,
236
+ fullscreen: !0,
237
+ "append-to-body": !0,
238
+ visible: t.state.visible,
239
+ title: "Schema 本地与线上差异",
240
+ "onUpdate:visible": e[2] || (e[2] = (b) => t.state.visible = b)
241
+ }, {
242
+ footer: r(() => [
243
+ d(c, { onClick: t.close }, {
244
+ default: r(() => e[7] || (e[7] = [
245
+ k("取 消")
246
+ ])),
247
+ _: 1
248
+ }, 8, ["onClick"]),
249
+ d(c, {
245
250
  type: "primary",
246
- onClick: o.autoSave
251
+ onClick: t.saveApi
247
252
  }, {
248
- default: r(() => e[7] || (e[7] = [
249
- k("设置并保存")
253
+ default: r(() => e[8] || (e[8] = [
254
+ k("保 存")
250
255
  ])),
251
256
  _: 1
252
257
  }, 8, ["onClick"])
253
- ])
254
- ])
258
+ ]),
259
+ default: r(() => [
260
+ t.state.visible ? (A(), M(f, {
261
+ key: 0,
262
+ ref: "editor",
263
+ class: "monaco-editor",
264
+ diffEditor: !0,
265
+ options: t.editorOptions,
266
+ value: t.state.code,
267
+ original: t.state.originalCode
268
+ }, null, 8, ["options", "value", "original"])) : U("", !0)
269
+ ]),
270
+ _: 1
271
+ }, 8, ["visible"])
255
272
  ]),
256
273
  _: 1
257
- })
274
+ }, 8, ["content", "icon", "options", "onClickApi"])
258
275
  ]);
259
276
  }
260
- const ie = /* @__PURE__ */ I(ee, [["render", se], ["__scopeId", "data-v-75c21aff"]]), pe = {
261
- ...V,
262
- entry: ie,
263
- apis: $
277
+ const ue = /* @__PURE__ */ oe(se, [["render", de], ["__scopeId", "data-v-d7b68e59"]]), _e = {
278
+ ...E,
279
+ entry: ue,
280
+ apis: ae
264
281
  };
265
282
  export {
266
- pe as default
283
+ _e as default
267
284
  };
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .dots[data-v-75c21aff]{width:6px;height:6px;background:var(--ti-lowcode-toolbar-dot-color);border-radius:50%;display:inline-block;position:absolute;top:4px;right:3px;z-index:100}.toolbar-save .save-button[data-v-75c21aff]{background-color:var(--ti-lowcode-toolbar-button-bg);border:none;min-width:70px;height:26px;display:flex;align-items:center;padding:0 8px;border-radius:4px}.toolbar-save .save-button[data-v-75c21aff]:not(.disabled):hover{background-color:var(--ti-lowcode-toolbar-button-bg)}.toolbar-save .save-button .save-title[data-v-75c21aff]{margin:0 6px}.toolbar-save[data-v-75c21aff] .icon-down-arrow:focus{outline:none}.save-style[data-v-75c21aff]{padding:20px 12px;font-size:12px}.save-style .save-setting[data-v-75c21aff]{font-size:14px;font-weight:600;line-height:20px;height:20px;margin-bottom:16px}.save-style .save-time[data-v-75c21aff]{line-height:24px;font-size:12px;margin:12px 0 16px;display:flex}.save-style .save-time .save-time-label[data-v-75c21aff]{width:60px}.save-style .save-time .tiny-select[data-v-75c21aff]{width:103px;margin-left:12px}.save-style .save-time .tiny-select[data-v-75c21aff] .tiny-input__suffix{width:12px;top:12px}.save-style .save-button-group[data-v-75c21aff]{text-align:right}.save-style .save-button-group[data-v-75c21aff] .tiny-button{min-width:40px;padding:0 8px;height:26px;line-height:24px;border:0;border-radius:4px}#saving[data-v-75c21aff]{cursor:not-allowed;color:var(--ti-lowcode-disabled-color)}#saving[data-v-75c21aff] svg{color:var(--ti-lowcode-disabled-color)}.dialog-box[data-v-75c21aff] .tiny-dialog-box{display:flex;flex-direction:column}.dialog-box[data-v-75c21aff] .tiny-dialog-box .tiny-dialog-box__body{flex:1}.dialog-box .monaco-editor[data-v-75c21aff]{width:100%;height:100%}.changeRole a{color:var(--ti-lowcode-canvas-handle-hover-bg);padding:0 5px}
1
+ .dots[data-v-d7b68e59]{width:6px;height:6px;background:var(--ti-lowcode-toolbar-dot-color);border-radius:50%;display:inline-block;position:absolute;top:4px;right:3px;z-index:100}.toolbar-save .icon-down-arrow.icon-down-arrow[data-v-d7b68e59]{margin-left:var(--te-base-space-2x);margin-right:var(--te-base-space-0)}.toolbar-save .save-button[data-v-d7b68e59]{background-color:var(--ti-lowcode-toolbar-button-bg);border:none;min-width:70px;height:26px;display:flex;align-items:center;padding:0 8px;border-radius:4px}.toolbar-save .save-button[data-v-d7b68e59]:not(.disabled):hover{background-color:var(--ti-lowcode-toolbar-button-bg)}.toolbar-save[data-v-d7b68e59] .icon-down-arrow:focus{outline:none}.save-style[data-v-d7b68e59]{padding:8px 4px;font-size:12px}.save-style .save-setting[data-v-d7b68e59]{font-size:14px;font-weight:600;line-height:20px;height:20px;margin-bottom:16px}.save-style .save-time[data-v-d7b68e59]{line-height:24px;font-size:12px;margin:12px 0 16px;display:flex}.save-style .save-time .save-time-label[data-v-d7b68e59]{width:60px;color:var(--te-common-text-secondary)}.save-style .save-time .tiny-select[data-v-d7b68e59]{width:103px;margin-left:12px}.save-style .save-time .tiny-select[data-v-d7b68e59] .tiny-input__suffix{width:12px;top:12px}.save-style .save-button-group[data-v-d7b68e59]{text-align:right}#saving[data-v-d7b68e59]{cursor:not-allowed;color:var(--ti-lowcode-disabled-color)}#saving[data-v-d7b68e59] svg{color:var(--ti-lowcode-disabled-color)}.dialog-box[data-v-d7b68e59] .tiny-dialog-box{display:flex;flex-direction:column}.dialog-box[data-v-d7b68e59] .tiny-dialog-box .tiny-dialog-box__body{flex:1}.dialog-box .monaco-editor[data-v-d7b68e59]{width:100%;height:100%}.changeRole a{color:var(--ti-lowcode-canvas-handle-hover-bg);padding:0 5px}.save-style .save-time .tiny-input__inner{height:24px!important}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opentiny/tiny-engine-toolbar-save",
3
- "version": "2.1.0",
3
+ "version": "2.2.0-rc.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -25,12 +25,12 @@
25
25
  "license": "MIT",
26
26
  "homepage": "https://opentiny.design/tiny-engine",
27
27
  "dependencies": {
28
- "@opentiny/tiny-engine-common": "2.1.0",
29
- "@opentiny/tiny-engine-meta-register": "2.1.0",
30
- "@opentiny/tiny-engine-utils": "2.1.0"
28
+ "@opentiny/tiny-engine-common": "2.2.0-rc.0",
29
+ "@opentiny/tiny-engine-meta-register": "2.2.0-rc.0",
30
+ "@opentiny/tiny-engine-utils": "2.2.0-rc.0"
31
31
  },
32
32
  "devDependencies": {
33
- "@opentiny/tiny-engine-vite-plugin-meta-comments": "2.1.0",
33
+ "@opentiny/tiny-engine-vite-plugin-meta-comments": "2.2.0-rc.0",
34
34
  "@vitejs/plugin-vue": "^5.1.2",
35
35
  "@vitejs/plugin-vue-jsx": "^4.0.1",
36
36
  "vite": "^5.4.2"
@@ -39,5 +39,5 @@
39
39
  "@opentiny/vue": "^3.14.0",
40
40
  "vue": "^3.4.15"
41
41
  },
42
- "gitHead": "faf3072c75ea5024689972e2a687916e084c156f"
42
+ "gitHead": "dd8ae425bcdb6b34773d9f5b2dd59a474dacabd1"
43
43
  }