@takagaki/cortex-decisions-viewer 0.12.217 → 0.12.219

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.
@@ -229,7 +229,7 @@ function googleConfirmPageJs() {
229
229
  document.head.appendChild(s);
230
230
  });
231
231
  }
232
- /** Picker でフォルダを選ぶ。選ばずに閉じたら null */
232
+ /** Picker でフォルダを選ぶ。選ばずに閉じたら null。確認(confirm)は、確かめる行のフォルダだけを出す(setFileIds は setEnableDrives・setParent と併用できないので 1 つの画面にする) */
233
233
  function pickFolder(info, accessToken) {
234
234
  return loadScript("https://apis.google.com/js/api.js")
235
235
  .then(function () { return new Promise(function (resolve) { window.gapi.load("picker", { callback: resolve }); }); })
@@ -238,13 +238,18 @@ function googleConfirmPageJs() {
238
238
  var g = window.google.picker;
239
239
  var mine = new g.DocsView(g.ViewId.FOLDERS).setIncludeFolders(true).setSelectFolderEnabled(true).setMimeTypes("application/vnd.google-apps.folder");
240
240
  var shared = new g.DocsView(g.ViewId.FOLDERS).setIncludeFolders(true).setSelectFolderEnabled(true).setEnableDrives(true).setMimeTypes("application/vnd.google-apps.folder");
241
- var picker = new g.PickerBuilder()
241
+ var builder = new g.PickerBuilder()
242
242
  .setAppId(info.projectNumber)
243
243
  .setDeveloperKey(info.apiKey)
244
244
  .setOAuthToken(accessToken)
245
- .enableFeature(g.Feature.SUPPORT_DRIVES)
246
- .addView(mine)
247
- .addView(shared)
245
+ .enableFeature(g.Feature.SUPPORT_DRIVES);
246
+ if (ctx.mode === "confirm" && ctx.id) {
247
+ var only = new g.DocsView(g.ViewId.FOLDERS).setIncludeFolders(true).setSelectFolderEnabled(true).setMimeTypes("application/vnd.google-apps.folder").setFileIds(ctx.id);
248
+ builder = builder.addView(only);
249
+ } else {
250
+ builder = builder.addView(mine).addView(shared);
251
+ }
252
+ var picker = builder
248
253
  .setCallback(function (data) {
249
254
  if (data.action === g.Action.PICKED && data.docs && data.docs[0]) resolve(data.docs[0]);
250
255
  else if (data.action === g.Action.CANCEL) resolve(null);
@@ -372,7 +377,7 @@ function googleConfirmPageJs() {
372
377
  var what = isDrive ? "Drive のフォルダ" : "Google Chat のスペース";
373
378
  titleEl.textContent = (ctx.mode === "confirm" ? what + "を確認する" : what + "を追加する");
374
379
  leadEl.textContent = isDrive
375
- ? "あなたの Google アカウントで、追加するフォルダを選びます。選んだフォルダだけを Cortex が確認に使います。「このアプリは Google で確認されていません」と出たら、「詳細」から進めます。"
380
+ ? (ctx.mode === "confirm" && ctx.id ? "登録済みのフォルダを、あなたの Google アカウントで開けるか確かめます。出てきたフォルダを選んで[Select]を押してください。" : "あなたの Google アカウントで、追加するフォルダを選びます。") + "選んだフォルダだけを Cortex が確認に使います。「このアプリは Google で確認されていません」と出たら、「詳細」から進めます。"
376
381
  : "あなたの Google アカウントで、このスペースを開けるかを確認します。メッセージは読みません。";
377
382
  openChannel();
378
383
  // 作業中(Picker の選択など)は本体へ生存の合図を送る。本体は、窓が閉じたように見えても、合図が続いている間は失敗にしない
package/dist/render.js CHANGED
@@ -19800,6 +19800,9 @@ ${story_1.splitByNameLinks.toString()}
19800
19800
  var btn = el("button", { class: "ds-toggle-btn", type: "button", text: "保存" });
19801
19801
  var msg = el("div", { class: "ds-toggle-msg" });
19802
19802
  var savedNote = el("p", { class: "sec-note sec-saved" });
19803
+ // 登録済みの鍵は欄を畳む(GitHub の Secrets・Vercel の環境変数と同じ)。[入れ直す]を押すまで欄とボタンは出さない(便 KU-3)
19804
+ var reopen = el("button", { class: "ds-toggle-btn sec-reopen", type: "button", text: "入れ直す" });
19805
+ var reopened = false;
19803
19806
  // 札が読む材料の控え。checking=保存〜確認の最中、savedHere=この画面で保存した(正本 secretsNow は最大 10 秒古い答えを返すので、registered を返すまで「登録済み」以上に固定する)
19804
19807
  var ent = { kind: kind, el: null, compact: compact, space: stateSpace, input: input, msg: msg, checking: false, savedHere: false };
19805
19808
 
@@ -19872,7 +19875,13 @@ ${story_1.splitByNameLinks.toString()}
19872
19875
  var reg = st.known === "yes";
19873
19876
  var d = savedDate(st);
19874
19877
  savedNote.hidden = !reg;
19875
- savedNote.textContent = reg ? "登録済み" + (d ? "(" + d + " に保存)" : "") + "。入れ直すときだけ貼ってください" : "";
19878
+ // 畳んだ形=登録済み(この画面で保存した直後も)で、[入れ直す]をまだ押していない。保存に失敗したときは reg が変わらないので畳まない
19879
+ var folded = reg && !reopened;
19880
+ savedNote.textContent = reg ? "登録済み" + (d ? "(" + d + " に保存)" : "") + (folded ? "" : "。入れ直すときだけ貼ってください") : "";
19881
+ input.style.display = folded ? "none" : "";
19882
+ btn.style.display = folded ? "none" : "";
19883
+ // 接続の確認中は出さない(押すと成功の文が消える)
19884
+ reopen.style.display = folded && !ent.checking ? "" : "none";
19876
19885
  if (!btn.disabled) btn.textContent = probeOk() ? "保存して接続を確認" : "保存";
19877
19886
  if (preferred) {
19878
19887
  var want = st.known === "no";
@@ -19914,12 +19923,21 @@ ${story_1.splitByNameLinks.toString()}
19914
19923
  return "";
19915
19924
  }
19916
19925
 
19926
+ reopen.addEventListener("click", function () {
19927
+ reopened = true;
19928
+ input.value = ""; // 畳まれる前に貼りかけた値を持ち越さない
19929
+ msg.className = "ds-toggle-msg";
19930
+ msg.textContent = "";
19931
+ paint();
19932
+ input.focus();
19933
+ });
19934
+
19917
19935
  btn.addEventListener("click", async function () {
19918
19936
  var value = input.value;
19919
19937
  if (!value.trim()) {
19920
19938
  msg.className = "ds-toggle-msg";
19921
19939
  // 登録済みで空のまま押しても何も変えない(置き換えるのは、貼ったときだけ)
19922
- msg.textContent = secretNow().known === "yes" ? "何も変えていません。入れ直すときだけ値を貼ってください。" : "";
19940
+ msg.textContent = secretNow().known === "yes" && reopened ? "何も変えていません。入れ直すときだけ値を貼ってください。" : "";
19923
19941
  if (secretNow().known !== "yes") { msg.className = "ds-toggle-msg is-error"; msg.textContent = "⚠ トークンを入力してください。"; }
19924
19942
  return;
19925
19943
  }
@@ -19951,9 +19969,12 @@ ${story_1.splitByNameLinks.toString()}
19951
19969
  // 入れた値は画面に残さない(肩越しに見えるのを防ぐ)
19952
19970
  input.value = "";
19953
19971
  ent.savedHere = true;
19972
+ reopened = false; // 保存できたら欄を畳む(成功の文と札だけ残す)
19973
+ var hadFocus = typeof document !== "undefined" && document.activeElement === btn;
19954
19974
  var willCheck = probeOk() && refsNow().length > 0;
19955
19975
  ent.checking = willCheck;
19956
19976
  paint();
19977
+ if (hadFocus) msg.setAttribute("tabindex", "-1"), msg.focus(); // 畳んだボタンからフォーカスを落とさない(成功の文へ)
19957
19978
  // 🔴 Backlog の行の一手は登録状況の正本に合わせて当て直す。正本(secretsNow)は取り直しで届く
19958
19979
  if (compact && typeof BACKLOG_UI.repaintRows === "function") BACKLOG_UI.repaintRows();
19959
19980
  if (willCheck) {
@@ -20019,6 +20040,7 @@ ${story_1.splitByNameLinks.toString()}
20019
20040
  input,
20020
20041
  el("div", { class: "ds-toggle" }, [btn, msg]),
20021
20042
  savedNote,
20043
+ reopen,
20022
20044
  // 🔴 **値の扱いの 1 文は常に出す**(顧客に鍵の貼り付けを求める画面でいちばん落としてはいけない説明・#101)
20023
20045
  el("p", { class: "sec-note", text: compact
20024
20046
  ? "入れた値は保存だけでき、あとから表示されません。"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@takagaki/cortex-decisions-viewer",
3
- "version": "0.12.217",
3
+ "version": "0.12.219",
4
4
  "description": "Cortexの意思決定記録(Decisions/*.md)を静的サイトにビルドして閲覧する。各レコードに「Edit on GitHub」リンクを付与する。",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,