@shwfed/nuxt 0.11.45 → 0.11.47

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.
@@ -13,6 +13,7 @@ import {
13
13
  FieldsBodyC,
14
14
  FieldsConfigC,
15
15
  FieldsStyleC,
16
+ MarkdownBodyFieldC,
16
17
  MarkdownFieldC,
17
18
  NumberFieldC,
18
19
  RadioGroupFieldC,
@@ -72,6 +73,7 @@ const fieldTypeOptions = computed(() => [
72
73
  { type: "textarea", label: t("field-type-textarea") },
73
74
  { type: "number", label: t("field-type-number") },
74
75
  { type: "markdown", label: t("field-type-markdown") },
76
+ { type: "markdown-body", label: t("field-type-markdown-body") },
75
77
  { type: "select", label: t("field-type-select") },
76
78
  { type: "radio", label: t("field-type-radio") },
77
79
  { type: "calendar", label: t("field-type-calendar") },
@@ -167,8 +169,20 @@ function isPassiveField(field) {
167
169
  function isMarkdownField(field) {
168
170
  return field.type === "markdown";
169
171
  }
172
+ function isMarkdownBodyField(field) {
173
+ return field.type === "markdown-body";
174
+ }
175
+ function isMarkdownContentField(field) {
176
+ return isMarkdownField(field) || isMarkdownBodyField(field);
177
+ }
178
+ function hasFieldLabel(field) {
179
+ return !isPassiveField(field) && !isMarkdownBodyField(field);
180
+ }
181
+ function supportsFieldCellStyles(field) {
182
+ return !isPassiveField(field) && !isMarkdownBodyField(field);
183
+ }
170
184
  function isPathlessField(field) {
171
- return isPassiveField(field) || isMarkdownField(field);
185
+ return isPassiveField(field) || isMarkdownContentField(field);
172
186
  }
173
187
  function isInteractiveField(field) {
174
188
  return !isPathlessField(field);
@@ -185,7 +199,7 @@ function getUnnamedFieldLabel(field) {
185
199
  });
186
200
  }
187
201
  function getFieldChineseTitle(field) {
188
- if (isPassiveField(field)) {
202
+ if (!hasFieldLabel(field)) {
189
203
  return void 0;
190
204
  }
191
205
  const zhTitle = field.title.find((item) => item.locale === "zh");
@@ -347,6 +361,13 @@ function normalizeField(field) {
347
361
  contentStyle: normalizeOptionalString(field.contentStyle ?? ""),
348
362
  hidden: normalizeOptionalString(field.hidden ?? "")
349
363
  };
364
+ case "markdown-body":
365
+ return {
366
+ ...field,
367
+ style: normalizeOptionalString(field.style ?? ""),
368
+ hidden: normalizeOptionalString(field.hidden ?? ""),
369
+ inline: field.inline ? true : void 0
370
+ };
350
371
  case "number":
351
372
  return {
352
373
  ...field,
@@ -464,6 +485,12 @@ function createField(type) {
464
485
  title,
465
486
  locale: createDefaultLocaleValue()
466
487
  };
488
+ case "markdown-body":
489
+ return {
490
+ id,
491
+ type,
492
+ locale: createDefaultLocaleValue()
493
+ };
467
494
  case "select":
468
495
  case "radio":
469
496
  return {
@@ -963,7 +990,7 @@ function handleAddItem(type) {
963
990
  addField(type);
964
991
  }
965
992
  function isFieldLabelConfigurable(field) {
966
- return !isPassiveField(field);
993
+ return hasFieldLabel(field);
967
994
  }
968
995
  function getFieldHideLabelValue(field) {
969
996
  if (!isFieldLabelConfigurable(field)) {
@@ -973,14 +1000,14 @@ function getFieldHideLabelValue(field) {
973
1000
  }
974
1001
  function updateSelectedFieldTitle(value) {
975
1002
  const selected = selectedField.value;
976
- if (!selected) {
1003
+ if (!selected || !hasFieldLabel(selected.field)) {
977
1004
  return;
978
1005
  }
979
1006
  clearFieldError(selected.draftId, "title");
980
- updateDraftField(selected.draftId, (field) => ({
1007
+ updateDraftField(selected.draftId, (field) => hasFieldLabel(field) ? {
981
1008
  ...field,
982
1009
  title: value
983
- }));
1010
+ } : field);
984
1011
  }
985
1012
  function updateSelectedFieldHideLabel(value) {
986
1013
  const selected = selectedField.value;
@@ -999,15 +1026,25 @@ function updateSelectedFieldHideLabel(value) {
999
1026
  }
1000
1027
  function updateSelectedMarkdownLocale(value) {
1001
1028
  const selected = selectedField.value;
1002
- if (!selected || selected.field.type !== "markdown") {
1029
+ if (!selected || !isMarkdownContentField(selected.field)) {
1003
1030
  return;
1004
1031
  }
1005
1032
  clearFieldError(selected.draftId, "locale");
1006
- updateDraftField(selected.draftId, (field) => field.type === "markdown" ? {
1033
+ updateDraftField(selected.draftId, (field) => isMarkdownContentField(field) ? {
1007
1034
  ...field,
1008
1035
  locale: value
1009
1036
  } : field);
1010
1037
  }
1038
+ function updateSelectedMarkdownInline(value) {
1039
+ const selected = selectedField.value;
1040
+ if (!selected || !isMarkdownBodyField(selected.field)) {
1041
+ return;
1042
+ }
1043
+ updateDraftField(selected.draftId, (field) => isMarkdownBodyField(field) ? {
1044
+ ...field,
1045
+ inline: value ? true : void 0
1046
+ } : field);
1047
+ }
1011
1048
  function updateSelectedFieldId(value) {
1012
1049
  const selected = selectedField.value;
1013
1050
  if (!selected || selected.field.type !== "slot") {
@@ -1053,25 +1090,25 @@ function updateSelectedFieldStyle(value) {
1053
1090
  }
1054
1091
  function updateSelectedFieldLabelStyle(value) {
1055
1092
  const selected = selectedField.value;
1056
- if (!selected || isPassiveField(selected.field)) {
1093
+ if (!selected || !supportsFieldCellStyles(selected.field)) {
1057
1094
  return;
1058
1095
  }
1059
1096
  clearFieldError(selected.draftId, "labelStyle");
1060
- updateDraftField(selected.draftId, (field) => isPassiveField(field) ? field : {
1097
+ updateDraftField(selected.draftId, (field) => supportsFieldCellStyles(field) ? {
1061
1098
  ...field,
1062
1099
  labelStyle: normalizeOptionalString(String(value))
1063
- });
1100
+ } : field);
1064
1101
  }
1065
1102
  function updateSelectedFieldContentStyle(value) {
1066
1103
  const selected = selectedField.value;
1067
- if (!selected || isPassiveField(selected.field)) {
1104
+ if (!selected || !supportsFieldCellStyles(selected.field)) {
1068
1105
  return;
1069
1106
  }
1070
1107
  clearFieldError(selected.draftId, "contentStyle");
1071
- updateDraftField(selected.draftId, (field) => isPassiveField(field) ? field : {
1108
+ updateDraftField(selected.draftId, (field) => supportsFieldCellStyles(field) ? {
1072
1109
  ...field,
1073
1110
  contentStyle: normalizeOptionalString(String(value))
1074
- });
1111
+ } : field);
1075
1112
  }
1076
1113
  function updateSelectedFieldHidden(value) {
1077
1114
  const selected = selectedField.value;
@@ -1566,6 +1603,10 @@ function getSchemaIssues(field) {
1566
1603
  const result = MarkdownFieldC.safeParse(field);
1567
1604
  return result.success ? [] : result.error.issues;
1568
1605
  }
1606
+ case "markdown-body": {
1607
+ const result = MarkdownBodyFieldC.safeParse(field);
1608
+ return result.success ? [] : result.error.issues;
1609
+ }
1569
1610
  case "select": {
1570
1611
  const result = SelectFieldC.safeParse(field);
1571
1612
  return result.success ? [] : result.error.issues;
@@ -1825,13 +1866,14 @@ function buildDslGuideMarkdown() {
1825
1866
  "### 3. \u5B57\u6BB5\u7C7B\u578B\u7EA6\u675F",
1826
1867
  "- \u9876\u5C42\u914D\u7F6E\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 `fields` \u653E\u6839\u7EA7\u5B57\u6BB5\uFF0C\u4E5F\u53EF\u4EE5\u4F7F\u7528 `groups` \u653E\u5206\u7EC4\u5B57\u6BB5\uFF0C\u4E24\u8005\u53EF\u4EE5\u540C\u65F6\u5B58\u5728\u3002",
1827
1868
  "- \u6BCF\u4E2A\u5B57\u6BB5\u7EC4\u90FD\u5FC5\u987B\u5305\u542B\u552F\u4E00\u4E14\u5408\u6CD5\u7684 UUID `id`\u3002",
1828
- "- \u5B57\u6BB5\u7EC4\u53EA\u8D1F\u8D23\u7ED3\u6784\u4E0E\u6837\u5F0F\uFF0C\u4E0D\u63D0\u4F9B\u6807\u9898\uFF1B\u5206\u7EC4\u8BF4\u660E\u8BF7\u4F7F\u7528 `markdown` \u5B57\u6BB5\u3002",
1869
+ "- \u5B57\u6BB5\u7EC4\u53EA\u8D1F\u8D23\u7ED3\u6784\u4E0E\u6837\u5F0F\uFF0C\u4E0D\u63D0\u4F9B\u6807\u9898\uFF1B\u5206\u7EC4\u8BF4\u660E\u4F18\u5148\u4F7F\u7528 `markdown-body` \u5B57\u6BB5\uFF0C\u82E5\u9700\u8981\u6807\u7B7E\u884C\u518D\u4F7F\u7528 `markdown` \u5B57\u6BB5\u3002",
1829
1870
  "- \u4EE3\u7801\u91CC\u5E94\u5148\u751F\u6210\u5E76\u4F7F\u7528 UUID\uFF0C\u518D\u628A\u540C\u4E00\u4E2A `id` \u7C98\u8D34\u56DE\u5B57\u6BB5\u914D\u7F6E\u3002",
1830
1871
  "- \u6240\u6709\u5B57\u6BB5\u90FD\u5FC5\u987B\u5305\u542B\u552F\u4E00\u4E14\u5408\u6CD5\u7684 UUID `id`\u3002",
1831
1872
  "- \u53EA\u6709\u53EF\u7ED1\u5B9A\u503C\u7684\u5B57\u6BB5\u53EF\u4EE5\u914D\u7F6E `path`\uFF0C\u5E76\u53C2\u4E0E\u8868\u5355\u503C\u8BFB\u5199\u3002",
1832
1873
  "- `slot` \u548C `empty` \u5B57\u6BB5\u90FD\u4E0D\u4F1A\u7ED1\u5B9A\u6A21\u578B\u503C\uFF0C\u53EA\u5141\u8BB8 `id`\u3001`type` \u548C\u53EF\u9009\u7684 `style`\u3002",
1833
1874
  "- `markdown` \u5B57\u6BB5\u4F7F\u7528 `title` \u4E0E `locale` \u5C55\u793A\u5E26\u6807\u7B7E\u7684 Markdown \u5185\u5BB9\uFF0C\u4E0D\u7ED1\u5B9A `path`\u3002",
1834
- "- \u9664 `slot` \u4E0E `empty` \u5916\uFF0C\u5176\u5B83\u5E26\u6807\u7B7E\u5B57\u6BB5\u90FD\u53EF\u4EE5\u8BBE\u7F6E `hideLabel` \u9690\u85CF\u6807\u7B7E\u3002",
1875
+ "- `markdown-body` \u5B57\u6BB5\u4F7F\u7528 `locale` \u5C55\u793A\u65E0\u6807\u7B7E\u7684\u7EAF Markdown \u5185\u5BB9\uFF0C\u53EF\u9009 `inline` \u63A7\u5236\u5185\u8054\u6E32\u67D3\uFF0C\u4E0D\u7ED1\u5B9A `path`\u3002",
1876
+ "- \u9664 `slot`\u3001`empty` \u4E0E `markdown-body` \u5916\uFF0C\u5176\u5B83\u5E26\u6807\u7B7E\u5B57\u6BB5\u90FD\u53EF\u4EE5\u8BBE\u7F6E `hideLabel` \u9690\u85CF\u6807\u7B7E\u3002",
1835
1877
  "- \u666E\u901A\u5B57\u6BB5\u53EF\u989D\u5916\u4F7F\u7528 `labelStyle` \u4E0E `contentStyle`\uFF0C\u7528\u4E8E contents \u5E03\u5C40\u6A21\u5F0F\u4E0B\u5206\u522B\u63A7\u5236\u6807\u7B7E\u4E0E\u5185\u5BB9\u5355\u5143\u683C\u3002"
1836
1878
  ].join("\n");
1837
1879
  }
@@ -1842,10 +1884,11 @@ function buildMarkdownNotes() {
1842
1884
  "- \u5148\u5728\u4EE3\u7801\u91CC\u751F\u6210\u5E76\u4F7F\u7528 UUID\uFF0C\u518D\u628A\u540C\u4E00\u4E2A `id` \u7C98\u8D34\u5230\u5B57\u6BB5\u914D\u7F6E\u4E2D\u3002",
1843
1885
  "- \u6240\u6709\u5B57\u6BB5\u7EC4 `id` \u90FD\u5FC5\u987B\u552F\u4E00\u4E14\u7B26\u5408 UUID \u683C\u5F0F\u3002",
1844
1886
  "- \u6240\u6709\u5B57\u6BB5 `id` \u90FD\u5FC5\u987B\u552F\u4E00\u4E14\u7B26\u5408 UUID \u683C\u5F0F\u3002",
1845
- "- \u5B57\u6BB5\u7EC4\u6CA1\u6709\u6807\u9898\uFF1B\u5982\u679C\u9700\u8981\u5206\u6BB5\u6807\u9898\u6216\u8BF4\u660E\uFF0C\u8BF7\u63D2\u5165 `markdown` \u5B57\u6BB5\u3002",
1887
+ "- \u5B57\u6BB5\u7EC4\u6CA1\u6709\u6807\u9898\uFF1B\u5982\u679C\u9700\u8981\u5206\u6BB5\u6807\u9898\u6216\u8BF4\u660E\uFF0C\u4F18\u5148\u63D2\u5165 `markdown-body` \u5B57\u6BB5\uFF1B\u9700\u8981\u6807\u7B7E\u884C\u65F6\u518D\u4F7F\u7528 `markdown` \u5B57\u6BB5\u3002",
1846
1888
  "- `slot` \u4E0E `empty` \u5B57\u6BB5\u53EA\u80FD\u4F7F\u7528 `id`\u3001`type` \u548C\u53EF\u9009\u7684 `style`\u3002",
1847
- "- `markdown` \u5B57\u6BB5\u4E0D\u4F7F\u7528 `path`\uFF0C\u5185\u5BB9\u6765\u81EA `locale` \u672C\u5730\u5316 Markdown\u3002",
1848
- "- \u9664 `slot` \u4E0E `empty` \u5916\uFF0C\u5176\u5B83\u5E26\u6807\u7B7E\u5B57\u6BB5\u90FD\u53EF\u4EE5\u8BBE\u7F6E `hideLabel`\u3002",
1889
+ "- `markdown` \u5B57\u6BB5\u4E0D\u4F7F\u7528 `path`\uFF0C\u5185\u5BB9\u6765\u81EA `title` \u4E0E `locale` \u672C\u5730\u5316 Markdown\u3002",
1890
+ "- `markdown-body` \u5B57\u6BB5\u4E0D\u4F7F\u7528 `path`\uFF0C\u5185\u5BB9\u6765\u81EA `locale` \u672C\u5730\u5316 Markdown\uFF0C\u53EF\u9009 `inline` \u63A7\u5236\u6E32\u67D3\u65B9\u5F0F\u3002",
1891
+ "- \u9664 `slot`\u3001`empty` \u4E0E `markdown-body` \u5916\uFF0C\u5176\u5B83\u5E26\u6807\u7B7E\u5B57\u6BB5\u90FD\u53EF\u4EE5\u8BBE\u7F6E `hideLabel`\u3002",
1849
1892
  "- \u666E\u901A\u5B57\u6BB5\u5728 contents \u5E03\u5C40\u6A21\u5F0F\u4E0B\u53EF\u989D\u5916\u4F7F\u7528 `labelStyle` \u4E0E `contentStyle`\u3002",
1850
1893
  "- \u53EA\u6709\u5E26 `path` \u7684\u5B57\u6BB5\u624D\u8981\u6C42 `path` \u552F\u4E00\u4E14\u4E0D\u80FD\u4E3A\u7A7A\u3002",
1851
1894
  "- \u8868\u8FBE\u5F0F\u5B57\u6BB5\u5FC5\u987B\u4E25\u683C\u9075\u5B88 schema \u7EA6\u675F\uFF1B\u5982\u679C schema \u4E0D\u652F\u6301\uFF0C\u5C31\u76F4\u63A5\u8BF4\u660E\u9650\u5236\u3002"
@@ -2514,7 +2557,7 @@ function confirmChanges() {
2514
2557
  </section>
2515
2558
 
2516
2559
  <section
2517
- v-if="!isPassiveField(selectedField.field)"
2560
+ v-if="hasFieldLabel(selectedField.field)"
2518
2561
  data-slot="fields-configurator-field-label-section"
2519
2562
  class="flex flex-col gap-2"
2520
2563
  >
@@ -2538,7 +2581,7 @@ function confirmChanges() {
2538
2581
  </section>
2539
2582
 
2540
2583
  <section
2541
- v-if="selectedField.field.type === 'markdown'"
2584
+ v-if="isMarkdownContentField(selectedField.field)"
2542
2585
  data-slot="fields-configurator-field-markdown-section"
2543
2586
  class="flex flex-col gap-2"
2544
2587
  >
@@ -2565,6 +2608,21 @@ function confirmChanges() {
2565
2608
  >
2566
2609
  {{ validationErrors[getFieldErrorKey(selectedField.draftId, "locale")] }}
2567
2610
  </p>
2611
+
2612
+ <label
2613
+ v-if="isMarkdownBodyField(selectedField.field)"
2614
+ class="flex items-center justify-between gap-3 rounded-md border border-zinc-200 px-3 py-2"
2615
+ >
2616
+ <div class="flex flex-col gap-1">
2617
+ <span class="text-sm font-medium text-zinc-800">{{ t("field-markdown-inline") }}</span>
2618
+ <span class="text-xs text-zinc-500">{{ t("field-markdown-inline-description") }}</span>
2619
+ </div>
2620
+ <Switch
2621
+ data-slot="fields-configurator-field-markdown-inline-switch"
2622
+ :model-value="selectedField.field.inline ?? false"
2623
+ @update:model-value="updateSelectedMarkdownInline"
2624
+ />
2625
+ </label>
2568
2626
  </section>
2569
2627
 
2570
2628
  <section
@@ -2629,7 +2687,7 @@ function confirmChanges() {
2629
2687
  </label>
2630
2688
 
2631
2689
  <label
2632
- v-if="!usesContentsOrientation"
2690
+ v-if="!usesContentsOrientation || isMarkdownBodyField(selectedField.field)"
2633
2691
  class="flex flex-col gap-2"
2634
2692
  >
2635
2693
  <span class="text-xs font-medium text-zinc-500">
@@ -2652,7 +2710,7 @@ function confirmChanges() {
2652
2710
  </label>
2653
2711
 
2654
2712
  <label
2655
- v-else
2713
+ v-else-if="supportsFieldCellStyles(selectedField.field)"
2656
2714
  class="flex flex-col gap-2"
2657
2715
  >
2658
2716
  <span class="text-xs font-medium text-zinc-500">
@@ -2675,7 +2733,7 @@ function confirmChanges() {
2675
2733
  </label>
2676
2734
 
2677
2735
  <label
2678
- v-if="usesContentsOrientation"
2736
+ v-if="usesContentsOrientation && supportsFieldCellStyles(selectedField.field)"
2679
2737
  class="flex flex-col gap-2"
2680
2738
  >
2681
2739
  <span class="text-xs font-medium text-zinc-500">
@@ -3358,6 +3416,7 @@ function confirmChanges() {
3358
3416
  "field-type-textarea": "多行文本",
3359
3417
  "field-type-number": "数字",
3360
3418
  "field-type-markdown": "Markdown",
3419
+ "field-type-markdown-body": "纯 Markdown",
3361
3420
  "field-type-select": "选择",
3362
3421
  "field-type-radio": "单选按钮组",
3363
3422
  "field-type-calendar": "日期",
@@ -3385,6 +3444,8 @@ function confirmChanges() {
3385
3444
  "group-style-invalid": "分组样式表达式无效",
3386
3445
  "field-markdown-content": "Markdown 内容",
3387
3446
  "field-markdown-content-description": "支持 Markdown 编辑,并支持双花括号表达式求值。",
3447
+ "field-markdown-inline": "内联渲染",
3448
+ "field-markdown-inline-description": "开启后使用内联 Markdown 渲染;关闭时按块级 Markdown 渲染。",
3388
3449
  "field-required": "显示必填提示",
3389
3450
  "field-required-description": "开启后仅在标签后显示红色星号,不会自动添加校验规则。",
3390
3451
  "field-hide-label": "隐藏标签",
@@ -3493,6 +3554,7 @@ function confirmChanges() {
3493
3554
  "field-type-textarea": "複数行テキスト",
3494
3555
  "field-type-number": "数値",
3495
3556
  "field-type-markdown": "Markdown",
3557
+ "field-type-markdown-body": "プレーン Markdown",
3496
3558
  "field-type-select": "選択",
3497
3559
  "field-type-radio": "ラジオグループ",
3498
3560
  "field-type-calendar": "日付",
@@ -3520,6 +3582,8 @@ function confirmChanges() {
3520
3582
  "group-style-invalid": "グループスタイル式が無効です",
3521
3583
  "field-markdown-content": "Markdown 内容",
3522
3584
  "field-markdown-content-description": "Markdown で編集でき、二重波括弧式も利用できます。",
3585
+ "field-markdown-inline": "インライン描画",
3586
+ "field-markdown-inline-description": "有効にするとインライン Markdown として描画し、無効ならブロック Markdown として描画します。",
3523
3587
  "field-required": "必須ヒントを表示",
3524
3588
  "field-required-description": "有効にするとラベルの後ろに赤い星印だけを表示し、検証ルールは自動追加しません。",
3525
3589
  "field-hide-label": "ラベルを非表示",
@@ -3628,6 +3692,7 @@ function confirmChanges() {
3628
3692
  "field-type-textarea": "Textarea",
3629
3693
  "field-type-number": "Number",
3630
3694
  "field-type-markdown": "Markdown",
3695
+ "field-type-markdown-body": "Plain Markdown",
3631
3696
  "field-type-select": "Select",
3632
3697
  "field-type-radio": "Radio Group",
3633
3698
  "field-type-calendar": "Date",
@@ -3655,6 +3720,8 @@ function confirmChanges() {
3655
3720
  "group-style-invalid": "The group style expression is invalid",
3656
3721
  "field-markdown-content": "Markdown content",
3657
3722
  "field-markdown-content-description": "Supports Markdown and can evaluate double-curly expressions.",
3723
+ "field-markdown-inline": "Inline rendering",
3724
+ "field-markdown-inline-description": "When enabled, render as inline Markdown. Otherwise render as block Markdown.",
3658
3725
  "field-required": "Show required hint",
3659
3726
  "field-required-description": "When enabled, only a red asterisk is shown after the label. No validation rule is added automatically.",
3660
3727
  "field-hide-label": "Hide label",
@@ -95,6 +95,16 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
95
95
  style?: string | undefined;
96
96
  hidden?: string | undefined;
97
97
  hideLabel?: boolean | undefined;
98
+ } | {
99
+ id: string;
100
+ type: "markdown-body";
101
+ locale: readonly {
102
+ locale: "en" | "ja" | "ko" | "zh";
103
+ message: string;
104
+ }[];
105
+ inline?: boolean | undefined;
106
+ style?: string | undefined;
107
+ hidden?: string | undefined;
98
108
  } | {
99
109
  options: string;
100
110
  label: string;
@@ -299,6 +309,16 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
299
309
  style?: string | undefined;
300
310
  hidden?: string | undefined;
301
311
  hideLabel?: boolean | undefined;
312
+ } | {
313
+ id: string;
314
+ type: "markdown-body";
315
+ locale: readonly {
316
+ locale: "en" | "ja" | "ko" | "zh";
317
+ message: string;
318
+ }[];
319
+ inline?: boolean | undefined;
320
+ style?: string | undefined;
321
+ hidden?: string | undefined;
302
322
  } | {
303
323
  options: string;
304
324
  label: string;
@@ -512,6 +532,16 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
512
532
  style?: string | undefined;
513
533
  hidden?: string | undefined;
514
534
  hideLabel?: boolean | undefined;
535
+ } | {
536
+ id: string;
537
+ type: "markdown-body";
538
+ locale: readonly {
539
+ locale: "en" | "ja" | "ko" | "zh";
540
+ message: string;
541
+ }[];
542
+ inline?: boolean | undefined;
543
+ style?: string | undefined;
544
+ hidden?: string | undefined;
515
545
  } | {
516
546
  options: string;
517
547
  label: string;
@@ -716,6 +746,16 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
716
746
  style?: string | undefined;
717
747
  hidden?: string | undefined;
718
748
  hideLabel?: boolean | undefined;
749
+ } | {
750
+ id: string;
751
+ type: "markdown-body";
752
+ locale: readonly {
753
+ locale: "en" | "ja" | "ko" | "zh";
754
+ message: string;
755
+ }[];
756
+ inline?: boolean | undefined;
757
+ style?: string | undefined;
758
+ hidden?: string | undefined;
719
759
  } | {
720
760
  options: string;
721
761
  label: string;
@@ -1,6 +1,6 @@
1
1
  import { useRoute, useRouter } from "#app";
2
2
  import { useSessionStorage } from "@vueuse/core";
3
- import { computed, toValue, onMounted } from "vue";
3
+ import { computed, toValue, watch } from "vue";
4
4
  export function useNavigationTabs(navigations) {
5
5
  const tabs = useSessionStorage("navigation-tabs", /* @__PURE__ */ new Set(), {
6
6
  writeDefaults: false
@@ -11,11 +11,31 @@ export function useNavigationTabs(navigations) {
11
11
  const clean = (path) => path.replace(/\/$/g, "");
12
12
  const route = useRoute();
13
13
  const router = useRouter();
14
- onMounted(() => {
15
- const path = clean(route.path);
14
+ const matchedRoute = computed(() => {
15
+ const currentPath = clean(route.path);
16
+ for (const group of toValue(navigations)) {
17
+ if ("children" in group) {
18
+ for (const item of group.children) {
19
+ if (clean(item.route) === currentPath) {
20
+ return currentPath;
21
+ }
22
+ }
23
+ } else {
24
+ if (clean(group.route) === currentPath) {
25
+ return currentPath;
26
+ }
27
+ }
28
+ }
29
+ });
30
+ watch(matchedRoute, (path) => {
31
+ if (!path) {
32
+ return;
33
+ }
16
34
  if (!tabs.value.has(path))
17
35
  tabs.value.add(path);
18
36
  active.value = path;
37
+ }, {
38
+ immediate: true
19
39
  });
20
40
  return {
21
41
  tabs,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shwfed/nuxt",
3
- "version": "0.11.45",
3
+ "version": "0.11.47",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "type": "module",