@bagelink/vue 0.0.464 → 0.0.471

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 (179) hide show
  1. package/dist/components/Accordion.vue.d.ts.map +1 -1
  2. package/dist/components/AccordionItem.vue.d.ts.map +1 -1
  3. package/dist/components/Alert.vue.d.ts +2 -2
  4. package/dist/components/Alert.vue.d.ts.map +1 -1
  5. package/dist/components/Avatar.vue.d.ts.map +1 -1
  6. package/dist/components/Badge.vue.d.ts +2 -2
  7. package/dist/components/Badge.vue.d.ts.map +1 -1
  8. package/dist/components/BglVideo.vue.d.ts +2 -2
  9. package/dist/components/BglVideo.vue.d.ts.map +1 -1
  10. package/dist/components/Btn.vue.d.ts.map +1 -1
  11. package/dist/components/Card.vue.d.ts.map +1 -1
  12. package/dist/components/Carousel.vue.d.ts +4 -2
  13. package/dist/components/Carousel.vue.d.ts.map +1 -1
  14. package/dist/components/DataPreview.vue.d.ts.map +1 -1
  15. package/dist/components/Drop.vue.d.ts +34 -0
  16. package/dist/components/Drop.vue.d.ts.map +1 -0
  17. package/dist/components/FileUploader.vue.d.ts +60 -0
  18. package/dist/components/FileUploader.vue.d.ts.map +1 -0
  19. package/dist/components/Flag.vue.d.ts +2 -2
  20. package/dist/components/Flag.vue.d.ts.map +1 -1
  21. package/dist/components/ListItem.vue.d.ts.map +1 -1
  22. package/dist/components/ListView.vue.d.ts.map +1 -1
  23. package/dist/components/MapEmbed.vue.d.ts +2 -2
  24. package/dist/components/MapEmbed.vue.d.ts.map +1 -1
  25. package/dist/components/MaterialIcon.vue.d.ts.map +1 -1
  26. package/dist/components/Modal.vue.d.ts +2 -1
  27. package/dist/components/Modal.vue.d.ts.map +1 -1
  28. package/dist/components/ModalConfirm.vue.d.ts.map +1 -1
  29. package/dist/components/ModalForm.vue.d.ts.map +1 -1
  30. package/dist/components/NavBar.vue.d.ts.map +1 -1
  31. package/dist/components/PageTitle.vue.d.ts.map +1 -1
  32. package/dist/components/TableSchema.vue.d.ts.map +1 -1
  33. package/dist/components/Title.vue.d.ts.map +1 -1
  34. package/dist/components/dashboard/Lineart.vue.d.ts.map +1 -1
  35. package/dist/components/dashboard/index.d.ts.map +1 -1
  36. package/dist/components/form/BglField.vue.d.ts.map +1 -1
  37. package/dist/components/form/BglForm.vue.d.ts +4 -2
  38. package/dist/components/form/BglForm.vue.d.ts.map +1 -1
  39. package/dist/components/form/ItemRef.vue.d.ts +1 -0
  40. package/dist/components/form/ItemRef.vue.d.ts.map +1 -1
  41. package/dist/components/form/index.d.ts.map +1 -1
  42. package/dist/components/form/inputs/CheckInput.vue.d.ts.map +1 -1
  43. package/dist/components/form/inputs/Checkbox.vue.d.ts.map +1 -1
  44. package/dist/components/form/inputs/ColorPicker.vue.d.ts.map +1 -1
  45. package/dist/components/form/inputs/DateInput.vue.d.ts.map +1 -1
  46. package/dist/components/form/inputs/DatePicker.vue.d.ts.map +1 -1
  47. package/dist/components/form/inputs/FileUpload.vue.d.ts +2 -1
  48. package/dist/components/form/inputs/FileUpload.vue.d.ts.map +1 -1
  49. package/dist/components/form/inputs/JSONInput.vue.d.ts.map +1 -1
  50. package/dist/components/form/inputs/RadioPillsInput.vue.d.ts.map +1 -1
  51. package/dist/components/form/inputs/RichText.vue.d.ts.map +1 -1
  52. package/dist/components/form/inputs/SelectField.vue.d.ts +1 -4
  53. package/dist/components/form/inputs/SelectField.vue.d.ts.map +1 -1
  54. package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
  55. package/dist/components/form/inputs/SignaturePad.vue.d.ts +56 -0
  56. package/dist/components/form/inputs/SignaturePad.vue.d.ts.map +1 -0
  57. package/dist/components/form/inputs/TableField.vue.d.ts.map +1 -1
  58. package/dist/components/form/inputs/TelInput.vue.d.ts +2 -2
  59. package/dist/components/form/inputs/TelInput.vue.d.ts.map +1 -1
  60. package/dist/components/form/inputs/TextInput.vue.d.ts.map +1 -1
  61. package/dist/components/form/inputs/ToggleInput.vue.d.ts.map +1 -1
  62. package/dist/components/form/inputs/index.d.ts +1 -0
  63. package/dist/components/form/inputs/index.d.ts.map +1 -1
  64. package/dist/components/index.d.ts.map +1 -1
  65. package/dist/components/layout/BottomMenu.vue.d.ts.map +1 -1
  66. package/dist/components/layout/Layout.vue.d.ts +2 -2
  67. package/dist/components/layout/Layout.vue.d.ts.map +1 -1
  68. package/dist/components/layout/SidebarMenu.vue.d.ts.map +1 -1
  69. package/dist/components/layout/TabbedLayout.vue.d.ts.map +1 -1
  70. package/dist/components/layout/Tabs.vue.d.ts.map +1 -1
  71. package/dist/components/layout/TabsBody.vue.d.ts.map +1 -1
  72. package/dist/components/layout/TabsNav.vue.d.ts.map +1 -1
  73. package/dist/components/layout/index.d.ts.map +1 -1
  74. package/dist/index.cjs +17616 -20818
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.mjs +17616 -20818
  77. package/dist/plugins/bagel.d.ts +1 -1
  78. package/dist/plugins/bagel.d.ts.map +1 -1
  79. package/dist/plugins/modal.d.ts +14 -14
  80. package/dist/plugins/modal.d.ts.map +1 -1
  81. package/dist/style.css +330 -309
  82. package/dist/types/BagelForm.d.ts +16 -16
  83. package/dist/types/BagelForm.d.ts.map +1 -1
  84. package/dist/types/BtnOptions.d.ts +1 -1
  85. package/dist/types/BtnOptions.d.ts.map +1 -1
  86. package/dist/types/NavLink.d.ts +2 -2
  87. package/dist/types/NavLink.d.ts.map +1 -1
  88. package/dist/types/file.d.ts +2 -2
  89. package/dist/types/file.d.ts.map +1 -1
  90. package/dist/types/index.d.ts.map +1 -1
  91. package/dist/types/materialIcons.d.ts.map +1 -1
  92. package/dist/utils/BagelFormUtils.d.ts.map +1 -1
  93. package/dist/utils/allCountries.d.ts +2 -2
  94. package/dist/utils/allCountries.d.ts.map +1 -1
  95. package/dist/utils/clickOutside.d.ts.map +1 -1
  96. package/dist/utils/index.d.ts +5 -5
  97. package/dist/utils/index.d.ts.map +1 -1
  98. package/package.json +19 -17
  99. package/src/components/Accordion.vue +10 -10
  100. package/src/components/AccordionItem.vue +47 -47
  101. package/src/components/Alert.vue +21 -21
  102. package/src/components/Avatar.vue +15 -15
  103. package/src/components/Badge.vue +17 -16
  104. package/src/components/BglVideo.vue +43 -43
  105. package/src/components/Btn.vue +64 -65
  106. package/src/components/Card.vue +26 -26
  107. package/src/components/Carousel.vue +130 -134
  108. package/src/components/DataPreview.vue +30 -30
  109. package/src/components/Flag.vue +26 -26
  110. package/src/components/ListItem.vue +13 -13
  111. package/src/components/ListView.vue +2 -2
  112. package/src/components/MapEmbed.vue +33 -33
  113. package/src/components/MaterialIcon.vue +12 -12
  114. package/src/components/Modal.vue +73 -66
  115. package/src/components/ModalConfirm.vue +18 -18
  116. package/src/components/ModalForm.vue +79 -76
  117. package/src/components/NavBar.vue +33 -30
  118. package/src/components/PageTitle.vue +10 -8
  119. package/src/components/TableSchema.vue +123 -113
  120. package/src/components/Title.vue +8 -8
  121. package/src/components/dashboard/Lineart.vue +103 -96
  122. package/src/components/dashboard/index.ts +1 -1
  123. package/src/components/form/BglField.vue +61 -61
  124. package/src/components/form/BglFieldSet.vue +9 -8
  125. package/src/components/form/BglForm.vue +71 -70
  126. package/src/components/form/index.ts +4 -4
  127. package/src/components/form/inputs/CheckInput.vue +25 -23
  128. package/src/components/form/inputs/Checkbox.vue +10 -10
  129. package/src/components/form/inputs/ColorPicker.vue +26 -24
  130. package/src/components/form/inputs/DateInput.vue +39 -39
  131. package/src/components/form/inputs/DatePicker.vue +37 -36
  132. package/src/components/form/inputs/FileUpload.vue +165 -161
  133. package/src/components/form/inputs/FileUploadURL.vue +134 -132
  134. package/src/components/form/inputs/JSONInput.vue +29 -29
  135. package/src/components/form/inputs/RadioPillsInput.vue +49 -49
  136. package/src/components/form/inputs/RichText.vue +62 -63
  137. package/src/components/form/inputs/SelectInput.vue +173 -167
  138. package/src/components/form/inputs/SignaturePad.vue +150 -0
  139. package/src/components/form/inputs/TableField.vue +77 -76
  140. package/src/components/form/inputs/TelInput.vue +280 -285
  141. package/src/components/form/inputs/TextInput.vue +81 -76
  142. package/src/components/form/inputs/ToggleInput.vue +13 -13
  143. package/src/components/form/inputs/index.ts +17 -15
  144. package/src/components/formkit/FileUploader.vue +162 -158
  145. package/src/components/formkit/MiscFields.vue +20 -20
  146. package/src/components/formkit/Toggle.vue +13 -13
  147. package/src/components/index.ts +28 -28
  148. package/src/components/layout/BottomMenu.vue +25 -21
  149. package/src/components/layout/Layout.vue +29 -29
  150. package/src/components/layout/SidebarMenu.vue +31 -27
  151. package/src/components/layout/TabbedLayout.vue +47 -45
  152. package/src/components/layout/Tabs.vue +32 -32
  153. package/src/components/layout/TabsBody.vue +10 -10
  154. package/src/components/layout/TabsNav.vue +44 -44
  155. package/src/components/layout/index.ts +7 -7
  156. package/src/components/layout/tabsManager.ts +6 -6
  157. package/src/index.ts +13 -8
  158. package/src/plugins/bagel.ts +37 -37
  159. package/src/plugins/modal.ts +66 -67
  160. package/src/styles/layout.css +5 -3
  161. package/src/styles/mobilLayout.css +7 -0
  162. package/src/types/BagelForm.ts +27 -27
  163. package/src/types/BtnOptions.ts +13 -13
  164. package/src/types/NavLink.ts +8 -8
  165. package/src/types/file.ts +11 -11
  166. package/src/types/index.ts +16 -12
  167. package/src/types/materialIcons.ts +3249 -3249
  168. package/src/utils/BagelFormUtils.ts +23 -23
  169. package/src/utils/allCountries.ts +11 -12
  170. package/src/utils/clickOutside.ts +6 -6
  171. package/src/utils/index.ts +39 -41
  172. package/src/utils/lang.ts +13 -13
  173. package/src/utils/strings.ts +9 -9
  174. package/tsconfig.json +0 -1
  175. package/vite.config.ts +8 -8
  176. package/dist/components/Popover.vue.d.ts +0 -10
  177. package/dist/components/Popover.vue.d.ts.map +0 -1
  178. package/dist/types/materialIcon.d.ts +0 -2
  179. package/dist/types/materialIcon.d.ts.map +0 -1
@@ -1,3 +1,71 @@
1
+ <script lang="ts" setup>
2
+ import {
3
+ onMounted,
4
+ onUnmounted,
5
+ useSlots,
6
+ watch,
7
+ } from 'vue'
8
+ import {
9
+ Btn,
10
+ type BtnOptions,
11
+ Card,
12
+ Title,
13
+ useEscape,
14
+ } from '@bagelink/vue'
15
+ import '../styles/modal.css'
16
+
17
+ const props = defineProps<{
18
+ side?: boolean
19
+ title?: string
20
+ width?: string
21
+ dismissable?: boolean
22
+ actions?: BtnOptions[]
23
+ visible?: boolean
24
+ }>()
25
+
26
+ const emit = defineEmits(['update:visible'])
27
+
28
+ const slots = useSlots()
29
+
30
+ let isVisible = $ref<boolean>(false)
31
+
32
+ watch(
33
+ () => props.visible,
34
+ (val) => {
35
+ if (val === isVisible || val === undefined) return
36
+ if (val) openModal()
37
+ else closeModal()
38
+ },
39
+ { immediate: true },
40
+ )
41
+
42
+ const maxWidth = $computed(() => {
43
+ const { width } = props
44
+ if (width?.match(/px|em|rem|vw|vh|%/)) return { 'max-width': width }
45
+ if (width?.match(/\d+/)) return { 'max-width': `${width}px` }
46
+ return { 'max-width': '720px' }
47
+ })
48
+
49
+ function closeModal() {
50
+ isVisible = false
51
+ setTimeout(() => { emit('update:visible', false) }, 200)
52
+ }
53
+
54
+ defineExpose({ closeModal })
55
+
56
+ const escapeKeyClose = (e: KeyboardEvent) => props.dismissable && useEscape(e, () => { closeModal() })
57
+
58
+ function openModal() {
59
+ setTimeout(() => (isVisible = true), 1)
60
+ }
61
+
62
+ onMounted(() => { document.addEventListener('keydown', escapeKeyClose) })
63
+
64
+ onUnmounted(() => {
65
+ document.removeEventListener('keydown', escapeKeyClose)
66
+ })
67
+ </script>
68
+
1
69
  <template>
2
70
  <div
3
71
  class="bg-dark"
@@ -5,8 +73,8 @@
5
73
  @click="() => (dismissable ? closeModal() : '')"
6
74
  @keydown.esc="closeModal"
7
75
  >
8
- <Card class="modal" @click.stop :style="{ ...maxWidth }">
9
- <header v-if="slots['toolbar'] || title" class="tool-bar">
76
+ <Card class="modal" :style="{ ...maxWidth }" @click.stop>
77
+ <header v-if="slots.toolbar || title" class="tool-bar">
10
78
  <slot name="toolbar" />
11
79
  <Btn
12
80
  :style="{ float: side ? 'left' : 'right' }"
@@ -14,7 +82,7 @@
14
82
  icon="close"
15
83
  @click="closeModal"
16
84
  />
17
- <Title class="modal-title" tag="h3" v-if="title" :label="title" />
85
+ <Title v-if="title" class="modal-title" tag="h3" :label="title" />
18
86
  </header>
19
87
 
20
88
  <div v-else class="sticky bg-white z-index-999 -mt-1 -ms-1 px-025 h-30px pt-025 modal-no-title">
@@ -28,13 +96,13 @@
28
96
  />
29
97
  </div>
30
98
  <slot />
31
- <footer v-if="slots['footer'] || actions?.length" class="modal-footer mt-3">
99
+ <footer v-if="slots.footer || actions?.length" class="modal-footer mt-1">
32
100
  <Btn
33
101
  v-for="(action, i) in actions"
34
102
  :key="i"
35
- @click="closeModal"
36
103
  color="gray"
37
104
  v-bind="action"
105
+ @click="closeModal"
38
106
  />
39
107
  <slot name="footer" />
40
108
  </footer>
@@ -42,67 +110,6 @@
42
110
  </div>
43
111
  </template>
44
112
 
45
- <script lang="ts" setup>
46
- import {
47
- onMounted, onUnmounted, watch, useSlots,
48
- } from 'vue';
49
- import {
50
- type BtnOptions, Btn, useEscape, Title, Card,
51
- } from '@bagelink/vue';
52
- import '../styles/modal.css';
53
-
54
- const props = defineProps<{
55
- side?: boolean;
56
- title?: string;
57
- width?: string;
58
- dismissable?: boolean;
59
- actions?: BtnOptions[];
60
- visible?: boolean;
61
- }>();
62
-
63
- const slots = useSlots();
64
-
65
- let isVisible = $ref<boolean>(false);
66
-
67
- watch(
68
- () => props.visible,
69
- (val) => {
70
- if (val === isVisible || val === undefined) return;
71
- if (val) openModal();
72
- else closeModal();
73
- },
74
- { immediate: true },
75
- );
76
-
77
- const maxWidth = $computed(() => {
78
- const { width } = props;
79
- if (width?.match(/px|em|rem|vw|vh|%/)) return { 'max-width': width };
80
- if (width?.match(/\d+/)) return { 'max-width': `${width}px` };
81
- return { 'max-width': '720px' };
82
- });
83
-
84
- const emit = defineEmits(['update:visible']);
85
-
86
- const closeModal = () => {
87
- isVisible = false;
88
- setTimeout(() => emit('update:visible', false), 200);
89
- };
90
-
91
- defineExpose({ closeModal });
92
-
93
- const escapeKeyClose = (e: KeyboardEvent) => props?.dismissable && useEscape(e, () => closeModal());
94
-
95
- function openModal() {
96
- setTimeout(() => (isVisible = true), 1);
97
- }
98
-
99
- onMounted(() => document.addEventListener('keydown', escapeKeyClose));
100
-
101
- onUnmounted(() => {
102
- document.removeEventListener('keydown', escapeKeyClose);
103
- });
104
- </script>
105
-
106
113
  <style>
107
114
  .modal-title {
108
115
  text-align: center;
@@ -1,26 +1,26 @@
1
- <template>
2
- <Modal width="380px" :dismissable="false" :title="title">
3
- {{ message }}
4
- <template #footer>
5
- <Btn @click="select(true)" color="primary" value="Confirm" />
6
- <Btn @click="select(false)" color="red" value="Cancel" />
7
- </template>
8
- </Modal>
9
- </template>
10
-
11
1
  <script lang="ts" setup>
12
- import { Btn, Modal } from '@bagelink/vue';
2
+ import { Btn, Modal } from '@bagelink/vue'
13
3
 
14
4
  const props = defineProps<{
15
- title: string;
16
- message: string;
17
- resolve: (value: boolean) => void;
18
- }>();
5
+ title: string
6
+ message: string
7
+ resolve: (value: boolean) => void
8
+ }>()
19
9
 
20
- const emit = defineEmits(['update:visible']);
10
+ const emit = defineEmits(['update:visible'])
21
11
 
22
12
  function select(val: boolean) {
23
- props.resolve(val);
24
- emit('update:visible');
13
+ props.resolve(val)
14
+ emit('update:visible')
25
15
  }
26
16
  </script>
17
+
18
+ <template>
19
+ <Modal width="380px" :dismissable="false" :title="title">
20
+ {{ message }}
21
+ <template #footer>
22
+ <Btn color="primary" value="Confirm" @click="select(true)" />
23
+ <Btn color="red" value="Cancel" @click="select(false)" />
24
+ </template>
25
+ </Modal>
26
+ </template>
@@ -1,103 +1,106 @@
1
- <template>
2
- <Modal
3
- @update:visible="($event) => emit('update:visible', $event)"
4
- :side
5
- ref="modal"
6
- :width
7
- :visible="visible"
8
- :dismissable
9
- :title >
10
- <BagelForm
11
- @submit="runSubmit"
12
- ref="form"
13
- v-model="formData"
14
- :schema="computedFormSchema" />
15
- <template #footer v-if="onDelete || onSubmit">
16
- <div>
17
- <Btn thin flat value="Cancel" @click="closeModal" />
18
- <Btn
19
- thin
20
- icon="delete"
21
- v-if="onDelete"
22
- flat
23
- value="Delete"
24
- @click="runDelete"
25
- color="red" />
26
- </div>
27
- <Btn value="Submit" @click="runSubmit" />
28
- </template>
29
- </Modal>
30
- </template>
31
-
32
1
  <script lang="ts" setup>
33
2
  import {
34
- Modal,
35
- Btn,
36
3
  BagelForm,
37
4
  type BglFormSchemaT,
5
+ Btn,
38
6
  type BtnOptions,
7
+ Modal,
39
8
  useBagel,
40
- } from '@bagelink/vue';
41
-
42
- const bagel = useBagel();
9
+ } from '@bagelink/vue'
43
10
 
44
11
  const props = defineProps<{
45
- side?: boolean;
46
- title?: string;
47
- width?: string;
48
- dismissable?: boolean;
49
- actions?: BtnOptions[];
50
- schema: BglFormSchemaT | (() => BglFormSchemaT);
51
- // eslint-disable-next-line no-unused-vars
52
- onSubmit?: (formData: any) => Promise<void>;
53
- // eslint-disable-next-line no-unused-vars
54
- onDelete?: (id: string) => void;
55
- // eslint-disable-next-line no-unused-vars
56
- visible?: boolean;
57
- // eslint-disable-next-line no-unused-vars
58
- onError?: (err: any) => void;
59
-
60
- modelValue?: Record<string, any>;
61
- }>();
62
-
63
- const emit = defineEmits(['update:visible']);
64
-
65
- const modal = $ref<InstanceType<typeof Modal>>();
12
+ side?: boolean
13
+ title?: string
14
+ width?: string
15
+ dismissable?: boolean
16
+ actions?: BtnOptions[]
17
+ schema: BglFormSchemaT | (() => BglFormSchemaT)
18
+
19
+ onSubmit?: (formData: any) => Promise<void>
20
+
21
+ onDelete?: (id: string) => void
22
+
23
+ visible?: boolean
24
+
25
+ onError?: (err: any) => void
26
+
27
+ modelValue?: Record<string, any>
28
+ }>()
29
+
30
+ const emit = defineEmits(['update:visible'])
31
+
32
+ const bagel = useBagel()
33
+
34
+ const modal = $ref<InstanceType<typeof Modal>>()
66
35
 
67
36
  const computedFormSchema = $computed(() => {
68
- if (typeof props.schema === 'function') return props.schema();
69
- return props.schema;
70
- });
37
+ if (typeof props.schema === 'function') return props.schema()
38
+ return props.schema
39
+ })
71
40
 
72
41
  const formData = defineModel<Record<string, any>>('modelValue', {
73
42
  default: {},
74
- });
75
- const form = $ref<InstanceType<typeof BagelForm>>();
76
- const closeModal = () => modal?.closeModal();
43
+ })
44
+ const form = $ref<InstanceType<typeof BagelForm>>()
45
+ const closeModal = () => modal?.closeModal()
77
46
 
78
- const runSubmit = async () => {
79
- if (form?.validateForm?.() === false) return;
47
+ async function runSubmit() {
48
+ if (form?.validateForm?.() === false) return
80
49
  try {
81
- await props.onSubmit?.(formData.value);
82
- closeModal();
50
+ await props.onSubmit?.(formData.value)
51
+ closeModal()
83
52
  } catch (err: any) {
84
- if (props.onError) props.onError(err);
85
- else bagel?.onError?.(err);
53
+ if (props.onError) props.onError(err)
54
+ else bagel.onError?.(err)
86
55
  }
87
- };
56
+ }
88
57
 
89
- const runDelete = () => {
90
- props.onDelete?.(formData.value?.id);
91
- closeModal();
92
- };
58
+ function runDelete() {
59
+ props.onDelete?.(formData.value.id)
60
+ closeModal()
61
+ }
93
62
 
94
63
  function setFormValues(values: Record<string, any>) {
95
- Object.assign(formData, values);
64
+ Object.assign(formData, values)
96
65
  }
97
66
 
98
- defineExpose({ setFormValues });
67
+ defineExpose({ setFormValues })
99
68
  </script>
100
69
 
70
+ <template>
71
+ <Modal
72
+ ref="modal"
73
+ :side
74
+ :width
75
+ :visible="visible"
76
+ :dismissable
77
+ :title
78
+ @update:visible="($event) => emit('update:visible', $event)"
79
+ >
80
+ <BagelForm
81
+ ref="form"
82
+ v-model="formData"
83
+ :schema="computedFormSchema"
84
+ @submit="runSubmit"
85
+ />
86
+ <template v-if="onDelete || onSubmit" #footer>
87
+ <div>
88
+ <Btn thin flat value="Cancel" @click="closeModal" />
89
+ <Btn
90
+ v-if="onDelete"
91
+ thin
92
+ icon="delete"
93
+ flat
94
+ value="Delete"
95
+ color="red"
96
+ @click="runDelete"
97
+ />
98
+ </div>
99
+ <Btn value="Submit" @click="runSubmit" />
100
+ </template>
101
+ </Modal>
102
+ </template>
103
+
101
104
  <style scoped>
102
105
  .modal-title {
103
106
  margin-top: 0.5rem;
@@ -1,13 +1,38 @@
1
+ <script lang="ts" setup>
2
+ import type { MaterialIcons, NavLink } from '@bagelink/vue'
3
+ import { MaterialIcon } from '@bagelink/vue'
4
+
5
+ withDefaults(
6
+ defineProps<{
7
+ footerLinks?: NavLink[]
8
+ links?: NavLink[]
9
+ homeIcon?: MaterialIcons
10
+ homeLabel?: string
11
+ homeTo?: string
12
+ }>(),
13
+ {
14
+ homeIcon: 'home',
15
+ homeLabel: 'Home',
16
+ homeTo: '/',
17
+ links: () => [],
18
+ footerLinks: () => [],
19
+ }
20
+ )
21
+
22
+ const isOpen = $ref(true)
23
+ </script>
24
+
1
25
  <template>
2
26
  <div :class="{ open: isOpen, closed: !isOpen }">
3
27
  <slot name="top" />
4
28
  <div
5
29
  class="nav-expend"
6
- @click="isOpen = !isOpen"
7
- @keypress.enter="isOpen = !isOpen"
8
30
  role="button"
9
31
  aria-label="Toggle Navigation"
10
- tabindex="0">
32
+ tabindex="0"
33
+ @click="isOpen = !isOpen"
34
+ @keypress.enter="isOpen = !isOpen"
35
+ >
11
36
  <MaterialIcon icon="chevron_right" class="top-arrow" />
12
37
  </div>
13
38
 
@@ -17,10 +42,11 @@
17
42
  <component
18
43
  :is="link.to ? 'router-link' : 'div'"
19
44
  v-for="link in links"
45
+ :key="link.label"
20
46
  class="nav-button"
21
47
  :to="link.to"
22
- :key="link.label"
23
- @click="link.onClick?.()">
48
+ @click="link.onClick?.()"
49
+ >
24
50
  <MaterialIcon :icon="link.icon" />
25
51
  <div class="tooltip">
26
52
  {{ link.label }}
@@ -33,10 +59,11 @@
33
59
  <component
34
60
  :is="link.to ? 'router-link' : 'div'"
35
61
  v-for="link in footerLinks"
62
+ :key="link.label"
36
63
  class="nav-button"
37
64
  :to="link.to"
38
65
  @click="link.onClick?.()"
39
- :key="link.label">
66
+ >
40
67
  <MaterialIcon :icon="link.icon" />
41
68
  <div class="tooltip">
42
69
  {{ link.label }}
@@ -48,30 +75,6 @@
48
75
  </div>
49
76
  </template>
50
77
 
51
- <script lang="ts" setup>
52
- import type { MaterialIcons, NavLink } from '@bagelink/vue';
53
- import { MaterialIcon } from '@bagelink/vue';
54
-
55
- const isOpen = $ref(true);
56
-
57
- withDefaults(
58
- defineProps<{
59
- footerLinks?: NavLink[];
60
- links?: NavLink[];
61
- homeIcon?: MaterialIcons;
62
- homeLabel?: string;
63
- homeTo?: string;
64
- }>(),
65
- {
66
- homeIcon: 'home',
67
- homeLabel: 'Home',
68
- homeTo: '/',
69
- links: () => [],
70
- footerLinks: () => [],
71
- }
72
- );
73
- </script>
74
-
75
78
  <style scoped>
76
79
  [dir='rtl'] .top-arrow {
77
80
  transform: rotate(180deg);
@@ -1,10 +1,3 @@
1
- <template>
2
- <div class="page-top">
3
- <h1 class="top-title m-0">
4
- <slot /> {{ value }}
5
- </h1>
6
- </div>
7
- </template>
8
1
  <script lang="ts" setup>
9
2
  defineProps({
10
3
  value: {
@@ -13,8 +6,17 @@ defineProps({
13
6
  }
14
7
 
15
8
  ,
16
- });
9
+ })
17
10
  </script>
11
+
12
+ <template>
13
+ <div class="page-top">
14
+ <h1 class="top-title m-0">
15
+ <slot /> {{ value }}
16
+ </h1>
17
+ </div>
18
+ </template>
19
+
18
20
  <style>
19
21
  .top-title {
20
22
  font-weight: 600;