living-documentation 7.3.0 → 7.4.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.
@@ -71,8 +71,6 @@
71
71
  "modal.new_folder.location_label": "Location",
72
72
  "modal.new_folder.root": "/ (root)",
73
73
  "modal.new_folder.browse_btn": "Browse…",
74
- "modal.new_folder.select_btn": "Select this folder",
75
- "modal.new_folder.browse_select_btn": "Select",
76
74
  "modal.new_folder.enter_name": "(enter a name)",
77
75
  "modal.new_folder.will_be_created": "Will be created at",
78
76
  "modal.new_folder.create_btn": "Create",
@@ -93,7 +91,6 @@
93
91
  "modal.new_doc.create_folder_btn": "+ Create",
94
92
  "modal.new_doc.error_empty_title": "Please enter a title.",
95
93
  "modal.new_doc.no_subfolders": "No sub-folders",
96
- "modal.new_doc.use_folder_btn": "✓ Use this folder",
97
94
 
98
95
  "modal.diag_link.title": "◇ Link a diagram",
99
96
  "modal.diag_link.existing_radio": "Existing diagram",
@@ -71,8 +71,6 @@
71
71
  "modal.new_folder.location_label": "Emplacement",
72
72
  "modal.new_folder.root": "/ (racine)",
73
73
  "modal.new_folder.browse_btn": "Parcourir…",
74
- "modal.new_folder.select_btn": "Sélectionner ce dossier",
75
- "modal.new_folder.browse_select_btn": "Sélectionner",
76
74
  "modal.new_folder.enter_name": "(saisir un nom)",
77
75
  "modal.new_folder.will_be_created": "Sera créé à",
78
76
  "modal.new_folder.create_btn": "Créer",
@@ -93,7 +91,6 @@
93
91
  "modal.new_doc.create_folder_btn": "+ Créer",
94
92
  "modal.new_doc.error_empty_title": "Veuillez saisir un titre.",
95
93
  "modal.new_doc.no_subfolders": "Aucun sous-dossier",
96
- "modal.new_doc.use_folder_btn": "✓ Utiliser ce dossier",
97
94
 
98
95
  "modal.diag_link.title": "◇ Lier un diagramme",
99
96
  "modal.diag_link.existing_radio": "Diagramme existant",
@@ -736,21 +736,15 @@
736
736
  <button
737
737
  id="new-folder-browse-up"
738
738
  onclick="newFolderBrowseUp()"
739
- class="text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 disabled:opacity-30"
739
+ data-i18n="common.up"
740
+ class="text-xs text-blue-600 dark:text-blue-400 hover:underline disabled:opacity-30 disabled:pointer-events-none shrink-0"
740
741
  >
741
-
742
+ Up
742
743
  </button>
743
744
  <span
744
745
  id="new-folder-browse-path"
745
746
  class="text-xs text-gray-500 dark:text-gray-400 font-mono truncate flex-1"
746
747
  ></span>
747
- <button
748
- onclick="newFolderSelectCurrentLocation()"
749
- data-i18n="modal.new_folder.select_btn"
750
- class="text-xs text-blue-600 dark:text-blue-400 hover:underline shrink-0"
751
- >
752
- Select this folder
753
- </button>
754
748
  </div>
755
749
  <div
756
750
  id="new-folder-browse-list"
@@ -874,6 +868,7 @@
874
868
  <button
875
869
  id="new-doc-browse-up"
876
870
  onclick="newDocBrowseUp()"
871
+ data-i18n="common.up"
877
872
  class="text-xs text-blue-600 dark:text-blue-400 hover:underline disabled:opacity-30 disabled:pointer-events-none shrink-0"
878
873
  >
879
874
  &#8593; Up
@@ -78,35 +78,28 @@ async function newDocLoadBrowse(dirPath) {
78
78
  ).then((r) => r.json());
79
79
  _newDocBrowseCurrent = data.current;
80
80
  _newDocBrowseParent = data.parent;
81
+ _newDocSelectedFolder = _newDocAbsToRel(data.current);
82
+
81
83
  document.getElementById("new-doc-browse-path").textContent =
82
84
  data.current;
83
85
  const atRoot = data.current === _newDocDocsFolder;
84
86
  document.getElementById("new-doc-browse-up").disabled = atRoot;
85
-
86
- const rows = data.dirs.map(
87
- (dir) =>
88
- `<div class="flex items-center hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors">
87
+ document.getElementById("new-doc-folder-display").textContent =
88
+ _newDocSelectedFolder ? "/" + _newDocSelectedFolder : "/ (root)";
89
+ newDocUpdatePreview();
90
+
91
+ list.innerHTML = data.dirs.length
92
+ ? data.dirs
93
+ .map(
94
+ (dir) => `
89
95
  <button data-path="${esc(dir.path)}" onclick="newDocLoadBrowse(this.dataset.path)"
90
- class="flex-1 flex items-center gap-2 px-3 py-2 text-sm text-left">
96
+ class="w-full flex items-center gap-2 px-3 py-2 text-sm text-left hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors">
91
97
  <span class="text-gray-400 shrink-0">&#128193;</span>
92
98
  <span class="text-gray-700 dark:text-gray-300 truncate">${esc(dir.name)}</span>
93
- </button>
94
- <button data-path="${esc(dir.path)}" onclick="newDocSelectFolder(this.dataset.path)"
95
- title="${window.t('modal.new_doc.use_folder_btn')}"
96
- class="shrink-0 text-blue-400 hover:text-blue-600 px-3 py-2 text-sm transition-colors">&#10003;</button>
97
- </div>`,
98
- );
99
-
100
- const selectBtn = `<button onclick="newDocSelectCurrentFolder()"
101
- class="w-full px-3 py-2 text-xs text-blue-600 dark:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-950/30 text-left font-medium border-t border-gray-100 dark:border-gray-800">
102
- ${window.t('modal.new_doc.use_folder_btn')}
103
- </button>`;
104
-
105
- list.innerHTML =
106
- (rows.length
107
- ? rows.join("")
108
- : `<p class="px-3 py-3 text-xs text-gray-400 text-center">${window.t('modal.new_doc.no_subfolders')}</p>`) +
109
- selectBtn;
99
+ </button>`,
100
+ )
101
+ .join("")
102
+ : `<p class="px-3 py-3 text-xs text-gray-400 text-center">${window.t('modal.new_doc.no_subfolders')}</p>`;
110
103
  } catch {
111
104
  list.innerHTML =
112
105
  `<p class="px-3 py-4 text-xs text-red-400 text-center">${window.t('common.cannot_read_dir')}</p>`;
@@ -127,19 +120,6 @@ function _newDocAbsToRel(absPath) {
127
120
  return absPath;
128
121
  }
129
122
 
130
- function newDocSelectFolder(absPath) {
131
- _newDocSelectedFolder = _newDocAbsToRel(absPath);
132
- _newDocBrowseCurrent = absPath;
133
- document.getElementById("new-doc-folder-display").textContent =
134
- _newDocSelectedFolder ? "/" + _newDocSelectedFolder : "/ (root)";
135
- document.getElementById("new-doc-browser").classList.add("hidden");
136
- newDocUpdatePreview();
137
- }
138
-
139
- function newDocSelectCurrentFolder() {
140
- newDocSelectFolder(_newDocBrowseCurrent || _newDocDocsFolder);
141
- }
142
-
143
123
  function newDocCreateFolder() {
144
124
  const name = document
145
125
  .getElementById("new-doc-new-folder-name")
@@ -152,7 +132,6 @@ function newDocCreateFolder() {
152
132
  document.getElementById("new-doc-folder-display").textContent =
153
133
  "/" + newRelPath;
154
134
  document.getElementById("new-doc-new-folder-name").value = "";
155
- document.getElementById("new-doc-browser").classList.add("hidden");
156
135
  newDocUpdatePreview();
157
136
  }
158
137
 
@@ -69,24 +69,32 @@ async function newFolderLoadBrowse(dirPath) {
69
69
  ).then((r) => r.json());
70
70
  _newFolderBrowseCurrent = data.current;
71
71
  _newFolderBrowseParent = data.parent;
72
+ _newFolderSelectedPath = data.current;
73
+
72
74
  document.getElementById("new-folder-browse-path").textContent =
73
75
  data.current;
74
76
  const atRoot = data.current === _newFolderDocsFolder;
75
77
  document.getElementById("new-folder-browse-up").disabled = atRoot;
76
78
 
79
+ const rel = data.current.startsWith(_newFolderDocsFolder + "/")
80
+ ? data.current.slice(_newFolderDocsFolder.length)
81
+ : data.current === _newFolderDocsFolder
82
+ ? ""
83
+ : data.current;
84
+ document.getElementById("new-folder-location-display").textContent = rel
85
+ ? rel
86
+ : "/ (root)";
87
+ newFolderUpdatePreview();
88
+
77
89
  list.innerHTML = data.dirs.length
78
90
  ? data.dirs
79
91
  .map(
80
92
  (dir) => `
81
- <div class="flex items-center hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors">
82
- <button data-path="${esc(dir.path)}" onclick="newFolderLoadBrowse(this.dataset.path)"
83
- class="flex-1 flex items-center gap-2 px-3 py-2 text-sm text-left">
84
- <span class="text-gray-400 shrink-0">&#128193;</span>
85
- <span class="truncate text-gray-700 dark:text-gray-300">${esc(dir.name)}</span>
86
- </button>
87
- <button data-path="${esc(dir.path)}" onclick="newFolderSelectFolder(this.dataset.path)"
88
- class="px-3 py-2 text-xs text-blue-600 dark:text-blue-400 hover:underline shrink-0">${window.t('modal.new_folder.browse_select_btn')}</button>
89
- </div>`,
93
+ <button data-path="${esc(dir.path)}" onclick="newFolderLoadBrowse(this.dataset.path)"
94
+ class="w-full flex items-center gap-2 px-3 py-2 text-sm text-left hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors">
95
+ <span class="text-gray-400 shrink-0">&#128193;</span>
96
+ <span class="truncate text-gray-700 dark:text-gray-300">${esc(dir.name)}</span>
97
+ </button>`,
90
98
  )
91
99
  .join("")
92
100
  : `<p class="px-3 py-3 text-xs text-gray-400 text-center">${window.t('modal.new_folder.no_subfolders')}</p>`;
@@ -100,25 +108,6 @@ function newFolderBrowseUp() {
100
108
  if (_newFolderBrowseParent) newFolderLoadBrowse(_newFolderBrowseParent);
101
109
  }
102
110
 
103
- function newFolderSelectCurrentLocation() {
104
- newFolderSelectFolder(_newFolderBrowseCurrent || _newFolderDocsFolder);
105
- }
106
-
107
- function newFolderSelectFolder(absPath) {
108
- _newFolderSelectedPath = absPath;
109
- _newFolderBrowseCurrent = absPath;
110
- const rel = absPath.startsWith(_newFolderDocsFolder + "/")
111
- ? absPath.slice(_newFolderDocsFolder.length)
112
- : absPath === _newFolderDocsFolder
113
- ? ""
114
- : absPath;
115
- document.getElementById("new-folder-location-display").textContent = rel
116
- ? rel
117
- : "/ (root)";
118
- document.getElementById("new-folder-browser").classList.add("hidden");
119
- newFolderUpdatePreview();
120
- }
121
-
122
111
  function newFolderUpdatePreview() {
123
112
  const name = document.getElementById("new-folder-name").value.trim();
124
113
  const previewEl = document.getElementById("new-folder-preview");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "living-documentation",
3
- "version": "7.3.0",
3
+ "version": "7.4.0",
4
4
  "description": "A CLI tool that serves a local Markdown documentation viewer",
5
5
  "main": "dist/src/server.js",
6
6
  "bin": {