@alfakit/vue 0.1.1 → 0.1.2

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.
Files changed (115) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/components/actions/ActionButton.js.map +1 -1
  3. package/dist/components/actions/ActionButton.vue.d.ts.map +1 -1
  4. package/dist/components/actions/ActionButton.vue_vue_type_script_setup_true_lang.js +160 -159
  5. package/dist/components/actions/ActionButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  6. package/dist/components/actions/ActionModal.js.map +1 -1
  7. package/dist/components/actions/ActionModal.vue.d.ts.map +1 -1
  8. package/dist/components/actions/ActionModal.vue_vue_type_script_setup_true_lang.js +214 -214
  9. package/dist/components/actions/ActionModal.vue_vue_type_script_setup_true_lang.js.map +1 -1
  10. package/dist/components/fields/ColorPickerField.js.map +1 -1
  11. package/dist/components/fields/ColorPickerField.vue.d.ts.map +1 -1
  12. package/dist/components/fields/ColorPickerField.vue_vue_type_script_setup_true_lang.js +1 -0
  13. package/dist/components/fields/ColorPickerField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  14. package/dist/components/fields/ComboboxSelect.js.map +1 -1
  15. package/dist/components/fields/ComboboxSelect.vue.d.ts.map +1 -1
  16. package/dist/components/fields/ComboboxSelect.vue_vue_type_script_setup_true_lang.js +1 -1
  17. package/dist/components/fields/ComboboxSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  18. package/dist/components/fields/FileUploadField.js.map +1 -1
  19. package/dist/components/fields/FileUploadField.vue.d.ts.map +1 -1
  20. package/dist/components/fields/FileUploadField.vue_vue_type_script_setup_true_lang.js +183 -183
  21. package/dist/components/fields/FileUploadField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  22. package/dist/components/fields/OneTimeCodeInputField.js.map +1 -1
  23. package/dist/components/fields/OneTimeCodeInputField.vue_vue_type_script_setup_true_lang.js +1 -2
  24. package/dist/components/fields/OneTimeCodeInputField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  25. package/dist/components/fields/SelectField.js.map +1 -1
  26. package/dist/components/fields/SelectField.vue.d.ts.map +1 -1
  27. package/dist/components/fields/SelectField.vue_vue_type_script_setup_true_lang.js +2 -2
  28. package/dist/components/fields/SelectField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  29. package/dist/components/fields/TableColumnHeaders.js.map +1 -1
  30. package/dist/components/fields/TableColumnHeaders.vue.d.ts.map +1 -1
  31. package/dist/components/fields/TableColumnHeaders.vue_vue_type_script_setup_true_lang.js +6 -3
  32. package/dist/components/fields/TableColumnHeaders.vue_vue_type_script_setup_true_lang.js.map +1 -1
  33. package/dist/components/file-manager/FileManagerView.js.map +1 -1
  34. package/dist/components/file-manager/FileManagerView.vue_vue_type_script_setup_true_lang.js +1 -1
  35. package/dist/components/file-manager/FileManagerView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  36. package/dist/components/form/FormBlock.js.map +1 -1
  37. package/dist/components/form/FormBlock.vue.d.ts.map +1 -1
  38. package/dist/components/form/FormBlock.vue_vue_type_script_setup_true_lang.js +81 -77
  39. package/dist/components/form/FormBlock.vue_vue_type_script_setup_true_lang.js.map +1 -1
  40. package/dist/components/form/form-context.js +25 -25
  41. package/dist/components/form/form-context.js.map +1 -1
  42. package/dist/components/layout/FusedGroupComponent.js.map +1 -1
  43. package/dist/components/layout/FusedGroupComponent.vue.d.ts.map +1 -1
  44. package/dist/components/layout/FusedGroupComponent.vue_vue_type_script_setup_true_lang.js +1 -0
  45. package/dist/components/layout/FusedGroupComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  46. package/dist/components/layout/TabsComponent.js.map +1 -1
  47. package/dist/components/layout/TabsComponent.vue.d.ts.map +1 -1
  48. package/dist/components/layout/TabsComponent.vue_vue_type_script_setup_true_lang.js +76 -55
  49. package/dist/components/layout/TabsComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  50. package/dist/components/notifications/NotificationsMenu.js.map +1 -1
  51. package/dist/components/notifications/NotificationsMenu.vue.d.ts.map +1 -1
  52. package/dist/components/notifications/NotificationsMenu.vue_vue_type_script_setup_true_lang.js +44 -42
  53. package/dist/components/notifications/NotificationsMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  54. package/dist/components/panel/GlobalSearch.js.map +1 -1
  55. package/dist/components/panel/GlobalSearch.vue.d.ts.map +1 -1
  56. package/dist/components/panel/GlobalSearch.vue_vue_type_script_setup_true_lang.js +1 -0
  57. package/dist/components/panel/GlobalSearch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  58. package/dist/components/panel/ShortcutKeys.js.map +1 -1
  59. package/dist/components/panel/ShortcutKeys.vue.d.ts.map +1 -1
  60. package/dist/components/panel/ShortcutKeys.vue_vue_type_script_setup_true_lang.js +4 -1
  61. package/dist/components/panel/ShortcutKeys.vue_vue_type_script_setup_true_lang.js.map +1 -1
  62. package/dist/components/panel/TenantMenu.js.map +1 -1
  63. package/dist/components/panel/TenantMenu.vue_vue_type_script_setup_true_lang.js +2 -2
  64. package/dist/components/panel/TenantMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  65. package/dist/components/table/GroupHeaderRow.js.map +1 -1
  66. package/dist/components/table/GroupHeaderRow.vue.d.ts.map +1 -1
  67. package/dist/components/table/GroupHeaderRow.vue_vue_type_script_setup_true_lang.js +55 -34
  68. package/dist/components/table/GroupHeaderRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  69. package/dist/components/table/SelectCell.js.map +1 -1
  70. package/dist/components/table/SelectCell.vue.d.ts.map +1 -1
  71. package/dist/components/table/SelectCell.vue_vue_type_script_setup_true_lang.js +24 -19
  72. package/dist/components/table/SelectCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  73. package/dist/components/table/TextInputCell.js.map +1 -1
  74. package/dist/components/table/TextInputCell.vue.d.ts.map +1 -1
  75. package/dist/components/table/TextInputCell.vue_vue_type_script_setup_true_lang.js +38 -33
  76. package/dist/components/table/TextInputCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  77. package/dist/components.css +347 -0
  78. package/dist/eject-manifest.json +2 -2
  79. package/dist/standalone/AlfakitToaster.js.map +1 -1
  80. package/dist/standalone/AlfakitToaster.vue.d.ts.map +1 -1
  81. package/dist/standalone/AlfakitToaster.vue_vue_type_script_setup_true_lang.js +23 -15
  82. package/dist/standalone/AlfakitToaster.vue_vue_type_script_setup_true_lang.js.map +1 -1
  83. package/dist/standalone.css +47 -0
  84. package/dist/starter-kit/widgets/SearchTrigger.js.map +1 -1
  85. package/dist/starter-kit/widgets/SearchTrigger.vue.d.ts.map +1 -1
  86. package/dist/starter-kit/widgets/SearchTrigger.vue_vue_type_script_setup_true_lang.js +1 -0
  87. package/dist/starter-kit/widgets/SearchTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  88. package/dist/starter-kit/widgets/TenantChooser.js.map +1 -1
  89. package/dist/starter-kit/widgets/TenantChooser.vue_vue_type_script_setup_true_lang.js +1 -1
  90. package/dist/starter-kit/widgets/TenantChooser.vue_vue_type_script_setup_true_lang.js.map +1 -1
  91. package/dist/themes.css +2 -334
  92. package/package.json +3 -3
  93. package/src/components/actions/ActionButton.vue +14 -6
  94. package/src/components/actions/ActionModal.vue +3 -1
  95. package/src/components/fields/ColorPickerField.vue +1 -0
  96. package/src/components/fields/ComboboxSelect.vue +1 -1
  97. package/src/components/fields/FileUploadField.vue +14 -11
  98. package/src/components/fields/OneTimeCodeInputField.vue +1 -1
  99. package/src/components/fields/SelectField.vue +4 -2
  100. package/src/components/fields/TableColumnHeaders.vue +6 -1
  101. package/src/components/file-manager/FileManagerView.vue +1 -1
  102. package/src/components/form/FormBlock.vue +24 -0
  103. package/src/components/form/form-context.ts +2 -2
  104. package/src/components/layout/FusedGroupComponent.vue +1 -0
  105. package/src/components/layout/TabsComponent.vue +61 -5
  106. package/src/components/notifications/NotificationsMenu.vue +11 -0
  107. package/src/components/panel/GlobalSearch.vue +1 -0
  108. package/src/components/panel/ShortcutKeys.vue +1 -0
  109. package/src/components/panel/TenantMenu.vue +2 -2
  110. package/src/components/table/GroupHeaderRow.vue +27 -0
  111. package/src/components/table/SelectCell.vue +5 -2
  112. package/src/components/table/TextInputCell.vue +11 -5
  113. package/src/standalone/AlfakitToaster.vue +12 -2
  114. package/src/starter-kit/widgets/SearchTrigger.vue +1 -0
  115. package/src/starter-kit/widgets/TenantChooser.vue +1 -1
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import type { TextInputColumnSchema } from '@alfakit/core'
3
- import { computed, ref } from 'vue'
3
+ import { computed, ref, useId } from 'vue'
4
4
  import { colorClass, textColorClasses } from '../../lib/colors'
5
5
  import { Icon } from '../../lib/icons'
6
6
  import { cn } from '../../lib/utils'
@@ -10,9 +10,13 @@ import { useCellUpdate, type CellProps } from './cell-update'
10
10
  const props = defineProps<CellProps>()
11
11
  const schema = computed(() => props.column as TextInputColumnSchema)
12
12
  const { update, saving, error } = useCellUpdate(props)
13
- const initial =
14
- props.cell.state === null || props.cell.state === undefined ? '' : String(props.cell.state)
15
- const value = ref(initial)
13
+ const errorId = useId()
14
+ // The saved value: follows the cell after the table reloads, so changing the input back to
15
+ // an earlier value is saved too.
16
+ const initial = computed(() =>
17
+ props.cell.state === null || props.cell.state === undefined ? '' : String(props.cell.state),
18
+ )
19
+ const value = ref(initial.value)
16
20
  // `prefix()` / `suffix()`: text affixes around the input, like the TextInput field.
17
21
  const grouped = computed(() => Boolean(props.cell.prefix || props.cell.suffix))
18
22
  </script>
@@ -57,7 +61,9 @@ const grouped = computed(() => Boolean(props.cell.prefix || props.cell.suffix))
57
61
  :step="schema.step"
58
62
  :inputmode="schema.inputMode"
59
63
  :disabled="Boolean(props.cell.disabled) || saving"
64
+ :aria-label="props.column.label || props.column.name"
60
65
  :aria-invalid="error ? true : undefined"
66
+ :aria-describedby="error ? errorId : undefined"
61
67
  :class="
62
68
  cn(
63
69
  'h-8 min-w-32',
@@ -92,6 +98,6 @@ const grouped = computed(() => Boolean(props.cell.prefix || props.cell.suffix))
92
98
  >{{ props.cell.suffix }}</span
93
99
  >
94
100
  </span>
95
- <span v-if="error" class="text-destructive block text-xs">{{ error }}</span>
101
+ <span v-if="error" :id="errorId" class="text-destructive block text-xs">{{ error }}</span>
96
102
  </span>
97
103
  </template>
@@ -1,6 +1,7 @@
1
1
  <script setup lang="ts">
2
- import { resolveToastPosition, type ToastPosition } from '@alfakit/core'
2
+ import { resolveToastPosition, STARTER_KIT_TOASTER_ID, type ToastPosition } from '@alfakit/core'
3
3
  import { onMounted, onUnmounted } from 'vue'
4
+ import { setToasterId } from '../components/notifications/flash-toasts'
4
5
  import Toaster from '../components/ui/Toaster.vue'
5
6
  import { useOptionalAlfakit } from '../context'
6
7
  import { claimToaster, createStandaloneContext, ensureFlashToasts } from './runtime'
@@ -38,15 +39,24 @@ let release: (() => void) | null = null
38
39
  onMounted(() => {
39
40
  if (!props.claimed) release = claimToaster()
40
41
 
42
+ // Our own toaster gets an id, so a `<Toaster />` the app's layout already mounts (the
43
+ // starter kits have one) doesn't show every Alfakit toast a second time.
44
+ if (props.toaster) setToasterId(STARTER_KIT_TOASTER_ID)
45
+
41
46
  ensureFlashToasts(context.registry)
42
47
  })
43
48
 
44
- onUnmounted(() => release?.())
49
+ onUnmounted(() => {
50
+ release?.()
51
+
52
+ if (props.toaster) setToasterId(undefined)
53
+ })
45
54
  </script>
46
55
 
47
56
  <template>
48
57
  <Toaster
49
58
  v-if="props.toaster"
59
+ :id="STARTER_KIT_TOASTER_ID"
50
60
  :position="resolveToastPosition(props.position, props.dir)"
51
61
  :dir="props.dir"
52
62
  rich-colors
@@ -50,6 +50,7 @@ function request() {
50
50
  <span class="sr-only sm:not-sr-only sm:flex-1 sm:text-start">{{ placeholder }}</span>
51
51
  <kbd
52
52
  v-if="hydrated && binding"
53
+ dir="ltr"
53
54
  class="bg-muted hidden rounded px-1 font-mono text-[10px] sm:inline"
54
55
  >{{ formatKeyBinding(binding) }}</kbd
55
56
  >
@@ -63,7 +63,7 @@ const visible = computed(
63
63
  <DropdownMenuSeparator v-if="tenancy.tenants.length > 0" />
64
64
  <DropdownMenuItem @select="router.visit(tenancy.registrationUrl!)">
65
65
  <Icon name="alfakit::panels.tenant-menu.registration-button" :fallback="PlusIcon" />
66
- {{ t('tenancy.register', {}, 'New') }}
66
+ {{ tenancy.registrationLabel ?? t('tenancy.register', {}, 'New') }}
67
67
  </DropdownMenuItem>
68
68
  </template>
69
69
  </DropdownMenuContent>