@leaflink/stash 44.0.0-beta.1 → 44.0.0-beta.11
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.
- package/README.md +107 -39
- package/dist/ActionsDropdown.js +25 -25
- package/dist/ActionsDropdown.js.map +1 -1
- package/dist/AddressSelect.js +12 -11
- package/dist/AddressSelect.js.map +1 -1
- package/dist/Alert.js +9 -9
- package/dist/Alert.js.map +1 -1
- package/dist/AppNavigationItem.js +22 -22
- package/dist/AppNavigationItem.js.map +1 -1
- package/dist/AppSidebar.js +11 -11
- package/dist/AppSidebar.js.map +1 -1
- package/dist/AppTopbar.js +12 -12
- package/dist/Avatar.js +12 -12
- package/dist/Avatar.js.map +1 -1
- package/dist/Backdrop.js +1 -1
- package/dist/Backdrop.js.map +1 -1
- package/dist/Badge.js +12 -12
- package/dist/Badge.js.map +1 -1
- package/dist/Badge.vue.d.ts +1 -1
- package/dist/Button.js +1 -1
- package/dist/Button.js.map +1 -1
- package/dist/Button.vue_used_vue_type_style_index_0_lang.module-63d31dc0.js +17 -0
- package/dist/Button.vue_used_vue_type_style_index_0_lang.module-63d31dc0.js.map +1 -0
- package/dist/ButtonGroup.js +28 -28
- package/dist/ButtonGroup.js.map +1 -1
- package/dist/Card.js +3 -3
- package/dist/Card.js.map +1 -1
- package/dist/CardHeader.js +3 -3
- package/dist/CardMedia.js +1 -1
- package/dist/CardMedia.js.map +1 -1
- package/dist/Carousel.js +260 -248
- package/dist/Carousel.js.map +1 -1
- package/dist/Checkbox.js +58 -46
- package/dist/Checkbox.js.map +1 -1
- package/dist/Checkbox.vue.d.ts +2 -0
- package/dist/Checkbox.vue_used_vue_type_style_index_0_lang.module-fa8d9c06.js +9 -0
- package/dist/Checkbox.vue_used_vue_type_style_index_0_lang.module-fa8d9c06.js.map +1 -0
- package/dist/ChevronToggle.js +1 -1
- package/dist/Chip.js +1 -1
- package/dist/Chip.js.map +1 -1
- package/dist/ConfirmationCodeInput.js +21 -21
- package/dist/ConfirmationCodeInput.js.map +1 -1
- package/dist/ContextSwitcher.js +6 -5
- package/dist/ContextSwitcher.js.map +1 -1
- package/dist/Copy.js +1 -1
- package/dist/CurrencyInput.js +2 -2
- package/dist/DataView.js +1 -1
- package/dist/DataViewFilters.js +7 -7
- package/dist/DataViewFilters.js.map +1 -1
- package/dist/DataViewSortButton.js +47 -38
- package/dist/DataViewSortButton.js.map +1 -1
- package/dist/DataViewToolbar.js +4 -4
- package/dist/DataViewToolbar.js.map +1 -1
- package/dist/DatePicker.js +12 -15
- package/dist/DatePicker.js.map +1 -1
- package/dist/DescriptionListTerm.js +8 -8
- package/dist/DescriptionListTerm.js.map +1 -1
- package/dist/Dialog.js +46 -46
- package/dist/Dialog.js.map +1 -1
- package/dist/Divider.js +9 -9
- package/dist/Divider.js.map +1 -1
- package/dist/Dropdown.js +17 -17
- package/dist/Dropdown.js.map +1 -1
- package/dist/EmptyState.js +1 -1
- package/dist/EmptyState.js.map +1 -1
- package/dist/Expand.js +1 -1
- package/dist/{Expand.vue_vue_type_script_setup_true_lang-5fe03d51.js → Expand.vue_vue_type_script_setup_true_lang-1751f4a6.js} +14 -15
- package/dist/Expand.vue_vue_type_script_setup_true_lang-1751f4a6.js.map +1 -0
- package/dist/Field.js +2 -2
- package/dist/Field.vue.d.ts +1 -1
- package/dist/{Field.vue_vue_type_script_setup_true_lang-475832fe.js → Field.vue_vue_type_script_setup_true_lang-42ba3c5a.js} +5 -5
- package/dist/Field.vue_vue_type_script_setup_true_lang-42ba3c5a.js.map +1 -0
- package/dist/FileUpload.js +49 -47
- package/dist/FileUpload.js.map +1 -1
- package/dist/FilterChip.js +20 -20
- package/dist/FilterChip.js.map +1 -1
- package/dist/FilterDrawerItem.js +4 -4
- package/dist/FilterDrawerItem.js.map +1 -1
- package/dist/FilterDropdown.js +19 -19
- package/dist/FilterDropdown.js.map +1 -1
- package/dist/FilterSelect.js +27 -27
- package/dist/FilterSelect.js.map +1 -1
- package/dist/Filters.js +51 -50
- package/dist/Filters.js.map +1 -1
- package/dist/HttpError.js +28 -28
- package/dist/HttpError.js.map +1 -1
- package/dist/IconLabel.js +17 -17
- package/dist/IconLabel.js.map +1 -1
- package/dist/IconLabel.vue.d.ts +1 -1
- package/dist/Illustration.js +10 -60
- package/dist/Illustration.js.map +1 -1
- package/dist/Illustration.vue_vue_type_script_setup_true_lang-d6a94e17.js +56 -0
- package/dist/Illustration.vue_vue_type_script_setup_true_lang-d6a94e17.js.map +1 -0
- package/dist/Image.js +67 -72
- package/dist/Image.js.map +1 -1
- package/dist/InlineEdit.js +3 -3
- package/dist/InlineEdit.js.map +1 -1
- package/dist/Input.js +43 -43
- package/dist/Input.js.map +1 -1
- package/dist/InputOptions.js +34 -33
- package/dist/InputOptions.js.map +1 -1
- package/dist/Label.js +1 -1
- package/dist/Label.vue.d.ts +13 -2
- package/dist/Label.vue_vue_type_script_setup_true_lang-4b02087f.js +38 -0
- package/dist/Label.vue_vue_type_script_setup_true_lang-4b02087f.js.map +1 -0
- package/dist/ListItem.js +16 -15
- package/dist/ListItem.js.map +1 -1
- package/dist/ListItemCell.js +9 -9
- package/dist/ListItemCell.js.map +1 -1
- package/dist/ListView.js +144 -140
- package/dist/ListView.js.map +1 -1
- package/dist/Loading.js +17 -10
- package/dist/Loading.js.map +1 -1
- package/dist/Loading.vue_used_vue_type_style_index_0_lang.module-ef5a3bc6.js +8 -0
- package/dist/Loading.vue_used_vue_type_style_index_0_lang.module-ef5a3bc6.js.map +1 -0
- package/dist/Menu.js +1 -1
- package/dist/Menu.js.map +1 -1
- package/dist/MenuItem.js +20 -14
- package/dist/MenuItem.js.map +1 -1
- package/dist/Metric.js +4 -4
- package/dist/Metric.js.map +1 -1
- package/dist/Modal.js +21 -21
- package/dist/Modal.js.map +1 -1
- package/dist/Modals.js +13 -13
- package/dist/Modals.js.map +1 -1
- package/dist/Module.js +2 -2
- package/dist/Module.js.map +1 -1
- package/dist/ModuleContent.js +2 -2
- package/dist/ModuleContent.js.map +1 -1
- package/dist/ModuleFooter.js +11 -11
- package/dist/ModuleFooter.js.map +1 -1
- package/dist/ModuleHeader.js +6 -6
- package/dist/ModuleHeader.js.map +1 -1
- package/dist/ObfuscateText.js +30 -32
- package/dist/ObfuscateText.js.map +1 -1
- package/dist/ObfuscateText.vue.d.ts +1 -1
- package/dist/PageContent.js +9 -9
- package/dist/PageContent.js.map +1 -1
- package/dist/PageHeader.js +24 -24
- package/dist/PageHeader.js.map +1 -1
- package/dist/PageNavigation.js +3 -3
- package/dist/PageNavigation.js.map +1 -1
- package/dist/Paginate.js +1 -1
- package/dist/Paginate.js.map +1 -1
- package/dist/Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js +11 -0
- package/dist/Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js.map +1 -0
- package/dist/QuickAction.js +20 -17
- package/dist/QuickAction.js.map +1 -1
- package/dist/Radio.js +30 -15
- package/dist/Radio.js.map +1 -1
- package/dist/RadioGroup.js +177 -148
- package/dist/RadioGroup.js.map +1 -1
- package/dist/RadioNew.js +118 -91
- package/dist/RadioNew.js.map +1 -1
- package/dist/SearchBar.js +27 -27
- package/dist/SearchBar.js.map +1 -1
- package/dist/Select.js +189 -188
- package/dist/Select.js.map +1 -1
- package/dist/SelectStatus.js +22 -21
- package/dist/SelectStatus.js.map +1 -1
- package/dist/Step.js +37 -37
- package/dist/Step.js.map +1 -1
- package/dist/Switch.js +44 -36
- package/dist/Switch.js.map +1 -1
- package/dist/Tab.js +3 -2
- package/dist/Tab.js.map +1 -1
- package/dist/{Tab.vue_vue_type_script_setup_true_lang-b810bee8.js → Tab.vue_vue_type_script_setup_true_lang-69d1b046.js} +23 -22
- package/dist/Tab.vue_vue_type_script_setup_true_lang-69d1b046.js.map +1 -0
- package/dist/Table.js +23 -22
- package/dist/Table.js.map +1 -1
- package/dist/Table.keys-cf93df19.js +27 -0
- package/dist/{Table.keys-1ebe4ecb.js.map → Table.keys-cf93df19.js.map} +1 -1
- package/dist/TableCell.js +24 -23
- package/dist/TableCell.js.map +1 -1
- package/dist/TableHeaderCell.js +37 -36
- package/dist/TableHeaderCell.js.map +1 -1
- package/dist/TableHeaderRow.js +13 -12
- package/dist/TableHeaderRow.js.map +1 -1
- package/dist/TableRow.js +36 -34
- package/dist/TableRow.js.map +1 -1
- package/dist/Tabs.js +2 -2
- package/dist/{Tabs.vue_used_vue_type_style_index_0_lang.module-4f247ed7.js → Tabs.vue_used_vue_type_style_index_0_lang.module-2a131332.js} +26 -26
- package/dist/Tabs.vue_used_vue_type_style_index_0_lang.module-2a131332.js.map +1 -0
- package/dist/Textarea.js +61 -53
- package/dist/Textarea.js.map +1 -1
- package/dist/Toast.js +23 -23
- package/dist/Toast.js.map +1 -1
- package/dist/components.css +1 -1
- package/dist/constants.d.ts +33 -26
- package/dist/constants.js +56 -41
- package/dist/constants.js.map +1 -1
- package/dist/index.js +21 -20
- package/dist/index.js.map +1 -1
- package/dist/storage.js +3 -2
- package/dist/storage.js.map +1 -1
- package/dist/tailwind-base.d.ts +16 -16
- package/dist/tailwind-base.js +16 -6
- package/dist/tailwind-base.js.map +1 -1
- package/dist/useGoogleMaps.js.map +1 -1
- package/dist/utils/helpers.js +37 -37
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/storage.js +30 -29
- package/dist/utils/storage.js.map +1 -1
- package/package.json +2 -2
- package/styles/_core.scss +1 -1
- package/styles/backwards-compat.css +61 -105
- package/styles/base.css +271 -113
- package/tailwind-base.ts +6 -1
- package/dist/Button.vue_used_vue_type_style_index_0_lang.module-b77978d6.js +0 -17
- package/dist/Button.vue_used_vue_type_style_index_0_lang.module-b77978d6.js.map +0 -1
- package/dist/Checkbox.vue_vue_type_style_index_0_scoped_0d7e7fd0_lang-4ed993c7.js +0 -2
- package/dist/Checkbox.vue_vue_type_style_index_0_scoped_0d7e7fd0_lang-4ed993c7.js.map +0 -1
- package/dist/Expand.vue_vue_type_script_setup_true_lang-5fe03d51.js.map +0 -1
- package/dist/Field.vue_vue_type_script_setup_true_lang-475832fe.js.map +0 -1
- package/dist/Label.vue_vue_type_script_setup_true_lang-1d29d98a.js +0 -37
- package/dist/Label.vue_vue_type_script_setup_true_lang-1d29d98a.js.map +0 -1
- package/dist/Loading.vue_vue_type_style_index_0_scoped_bb8d5f15_lang-4ed993c7.js +0 -2
- package/dist/Loading.vue_vue_type_style_index_0_scoped_bb8d5f15_lang-4ed993c7.js.map +0 -1
- package/dist/Paginate.vue_used_vue_type_style_index_0_lang.module-bfccf992.js +0 -11
- package/dist/Paginate.vue_used_vue_type_style_index_0_lang.module-bfccf992.js.map +0 -1
- package/dist/Tab.vue_vue_type_script_setup_true_lang-b810bee8.js.map +0 -1
- package/dist/Table.keys-1ebe4ecb.js +0 -27
- package/dist/Tabs.vue_used_vue_type_style_index_0_lang.module-4f247ed7.js.map +0 -1
- package/styles/_base.scss +0 -493
- package/styles/elements/_links.scss +0 -32
- package/styles/elements/_lists.scss +0 -31
- package/styles/elements/_misc.scss +0 -16
- package/styles/main.scss +0 -38
package/README.md
CHANGED
|
@@ -36,25 +36,100 @@ Stash is a collection of primitive, product-agnostic elements that help encapsul
|
|
|
36
36
|
|
|
37
37
|
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
|
38
38
|
|
|
39
|
-
##
|
|
39
|
+
## Quick Start
|
|
40
|
+
|
|
41
|
+
Stash requires Vue 3 and Tailwind CSS 3. To get started, install the package and its peer dependencies:
|
|
40
42
|
|
|
41
43
|
```sh
|
|
42
|
-
npm install @leaflink/stash
|
|
44
|
+
npm install @leaflink/stash tailwindcss@3
|
|
43
45
|
```
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
Then, import the package and its styles in your app. Load the base and components styles from Stash, and then add your
|
|
48
|
+
app's styles after them.
|
|
49
|
+
|
|
50
|
+
```ts filename="main.ts"
|
|
47
51
|
import { createApp } from 'vue';
|
|
48
52
|
import stash from '@leaflink/stash';
|
|
49
53
|
|
|
54
|
+
// stash styles
|
|
55
|
+
import '@leaflink/stash/styles/base.css';
|
|
56
|
+
import '@leaflink/stash/components.css';
|
|
57
|
+
|
|
58
|
+
// app styles
|
|
59
|
+
import './app.css';
|
|
60
|
+
|
|
50
61
|
const app = createApp(App);
|
|
51
62
|
|
|
52
63
|
app.use(stash);
|
|
53
64
|
```
|
|
54
65
|
|
|
66
|
+
Your app styles should be loaded after the Stash styles to ensure that they override the Stash styles. At minimum, your
|
|
67
|
+
app styles should include the following:
|
|
68
|
+
|
|
69
|
+
```css filename="app.css"
|
|
70
|
+
@tailwind base;
|
|
71
|
+
@tailwind components;
|
|
72
|
+
@tailwind utilities;
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Configure Tailwind in your app by creating a `tailwind.config.ts` file. It should include the Stash files in the
|
|
76
|
+
`content` setting.
|
|
77
|
+
|
|
78
|
+
```ts filename="tailwind.config.ts"
|
|
79
|
+
import stashPreset from '@leaflink/stash/tailwind-base';
|
|
80
|
+
|
|
81
|
+
/** @type {import('tailwindcss').Config} */
|
|
82
|
+
export default {
|
|
83
|
+
presets: [stashPreset],
|
|
84
|
+
|
|
85
|
+
content: ['./src/**/*.{vue,ts,js}', './node_modules/@leaflink/stash/dist/*.js'],
|
|
86
|
+
};
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
See the [Tailwind](#tailwind) section for more details on how to configure it in your app.
|
|
90
|
+
|
|
91
|
+
> [!INFO]
|
|
92
|
+
> For apps still requiring deprecated css & utility classes, you can include the backwards compat styles from Stash:
|
|
93
|
+
|
|
94
|
+
```ts filename="main.ts"
|
|
95
|
+
import '@leaflink/stash/styles/backwards-compat.css'; // Add this line before the base and components styles.
|
|
96
|
+
import '@leaflink/stash/styles/base.css';
|
|
97
|
+
import '@leaflink/stash/components.css';
|
|
98
|
+
|
|
99
|
+
import './app.css';
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Also, if you still need legacy Stash sass variables, functions, and mixins in your components, you can configure Vite to
|
|
103
|
+
import them:
|
|
104
|
+
|
|
105
|
+
```ts filename="vite.config.ts"
|
|
106
|
+
export default defineConfig(({ mode }) => {
|
|
107
|
+
const env = loadEnv(mode, process.cwd(), '');
|
|
108
|
+
|
|
109
|
+
return {
|
|
110
|
+
css: {
|
|
111
|
+
preprocessorOptions: {
|
|
112
|
+
scss: {
|
|
113
|
+
additionalData: '@use "sass:map"; @import "@leaflink/stash/styles/core";',
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
```
|
|
120
|
+
|
|
55
121
|
## Usage
|
|
56
122
|
|
|
57
|
-
|
|
123
|
+
`@leaflink/stash` is a Vue component library that implements [Leaflink's Stash Design System](https://stash.leaflink.com). So every one of LeafLink's colors, typography, shadows, etc. can be accessible via tailwind utility classes like `tw-text-blue-500 tw-text-sm`.
|
|
124
|
+
|
|
125
|
+
Stash is a Vue plugin that can be installed in your app. You **do not need to install the plugin in order to use the components**, but it is required if you need to configure the framework to suit your specific needs.
|
|
126
|
+
|
|
127
|
+
There are several options to configure the framework to suit your specific needs, and they are all optional. Any options
|
|
128
|
+
you pass to the plugin will be merged with the default options & applied to the entire framework.
|
|
129
|
+
|
|
130
|
+
> [!WARNING]
|
|
131
|
+
> If you don't install the plugin in your app, you will need to manually setup [modals](https://stash.leaflink.com/guides/modals.html#installation), [toasts](https://stash.leaflink.com/guides/toasts.html#installation), and other features that
|
|
132
|
+
> require some setup that's normally done for you by the Stash plugin.
|
|
58
133
|
|
|
59
134
|
```ts
|
|
60
135
|
interface StashPluginOptions {
|
|
@@ -130,11 +205,11 @@ app.use(stash, {
|
|
|
130
205
|
locale,
|
|
131
206
|
t: (key, value) => i18n.t(key, value)
|
|
132
207
|
},
|
|
133
|
-
googleMapsApiKey: import.meta.env.VITE_GOOGLE_MAPS_API
|
|
208
|
+
googleMapsApiKey: import.meta.env.VITE_GOOGLE_MAPS_API,
|
|
134
209
|
});
|
|
135
210
|
```
|
|
136
211
|
|
|
137
|
-
This example will load the core i18n options and
|
|
212
|
+
This example will load the core i18n options and Google Maps api key.
|
|
138
213
|
|
|
139
214
|
### npm scripts
|
|
140
215
|
|
|
@@ -151,40 +226,37 @@ A few commonly used commands are:
|
|
|
151
226
|
- `npm run build` will build the application and prepare it for production.
|
|
152
227
|
- `npm run build-ts` will build the application, perform a static analysis to find any type errors and prepare it for production.
|
|
153
228
|
|
|
154
|
-
## Styles
|
|
229
|
+
## Legacy Styles
|
|
155
230
|
|
|
156
|
-
`@leaflink/stash` exposes
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
// main.ts
|
|
231
|
+
`@leaflink/stash` exposes a stylesheet for backwards compatibility with legacy stash utilities. This stylesheet includes
|
|
232
|
+
styles for components that have been deprecated or removed from the Stash Design System. It is not required for
|
|
233
|
+
greenfield projects.
|
|
160
234
|
|
|
235
|
+
```ts filename="main.ts"
|
|
161
236
|
/* legacy stash styles - not required for greenfield projects */
|
|
162
|
-
import '@leaflink/stash/styles/main.scss'; // once backwards-compat.css is filled out, this can be removed
|
|
163
237
|
import '@leaflink/stash/styles/backwards-compat.css';
|
|
164
238
|
|
|
165
239
|
/* stash styles */
|
|
166
240
|
import '@leaflink/stash/styles/base.css';
|
|
167
241
|
import '@leaflink/stash/components.css';
|
|
168
242
|
|
|
169
|
-
|
|
170
|
-
@tailwind base;
|
|
171
|
-
@tailwind components;
|
|
172
|
-
@tailwind utilities;
|
|
243
|
+
import './app.css';
|
|
173
244
|
```
|
|
174
245
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
### Tailwind
|
|
246
|
+
## Tailwind
|
|
178
247
|
|
|
179
|
-
`@leaflink/stash` uses [Tailwind](https://tailwindcss.com/) behind the scene to style its components. It's currently
|
|
248
|
+
`@leaflink/stash` uses [Tailwind](https://tailwindcss.com/) behind the scene to style its components. It's currently
|
|
249
|
+
required to **run this library downstream in order to avoid issues with css duplication & ordering**.
|
|
180
250
|
|
|
181
|
-
In order to avoid class name clashes, `@leaflink/stash` prefixes Tailwind utility classes with
|
|
251
|
+
In order to avoid class name clashes with legacy utilities, `@leaflink/stash` prefixes Tailwind utility classes with
|
|
252
|
+
`tw-`. This may change in the future when all LeafLink apps no longer need deprecated styles. For now, when needing to
|
|
253
|
+
use a tailwind class, just add the `tw` prefix like so: `tw-flex md:tw-text-blue`.
|
|
182
254
|
|
|
183
|
-
```
|
|
184
|
-
import Button from
|
|
185
|
-
import IconLabel from
|
|
255
|
+
```jsx
|
|
256
|
+
import Button from '@leaflink/stash/Button.vue';
|
|
257
|
+
import IconLabel from '@leaflink/stash/IconLabel.vue';
|
|
186
258
|
|
|
187
|
-
<Button icon-label class="tw-
|
|
259
|
+
<Button icon-label class="tw-hidden md:tw-inline tw-ml-3">
|
|
188
260
|
<IconLabel icon="user-add" title="Add Recipient" size="dense" stacked>Add Recipient</IconLabel>
|
|
189
261
|
</Button>
|
|
190
262
|
```
|
|
@@ -206,21 +278,17 @@ export default {
|
|
|
206
278
|
};
|
|
207
279
|
```
|
|
208
280
|
|
|
209
|
-
### Design System
|
|
210
|
-
|
|
211
|
-
`@leaflink/stash` is a Vue component library that implements [Leaflink's Stash Design System](https://leaflink.atlassian.net/wiki/spaces/EN/pages/2394063290/Stash+Design+System). So every one of LeafLink's colors, typography, shadows, etc. can be accessible via tailwind utility classes like `tw-text-blue-500 tw-text-sm`.
|
|
212
|
-
|
|
213
281
|
## Resources
|
|
214
282
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
283
|
+
* **index.js**: This is the "install" entry point, for use with `app.use(...)`.
|
|
284
|
+
* **components**: All components
|
|
285
|
+
* **composables**: Similar to mixins or React's "Hooks", but for a Vue component
|
|
286
|
+
* **constants**: LeafLink global constants
|
|
287
|
+
* **directives**: [Vue directives](https://vuejs.org/guide/reusability/custom-directives#custom-directives)
|
|
288
|
+
* **plugins**: [Vue plugins](https://vuejs.org/guide/reusability/plugins.html#plugins)
|
|
289
|
+
* **styles**: SCSS, CSS, style utils, etc.
|
|
290
|
+
* **types**: TypeScript type declarations
|
|
291
|
+
* **utils**: Includes various helpers for internal and external use
|
|
224
292
|
|
|
225
293
|
## Core files & Entry Points
|
|
226
294
|
|
package/dist/ActionsDropdown.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { defineComponent as c, useCssModule as p, openBlock as m, createBlock as u, unref as n, normalizeClass as s, createSlots as f, withCtx as e, createVNode as a, createTextVNode as
|
|
1
|
+
import { defineComponent as c, useCssModule as p, openBlock as m, createBlock as u, unref as n, normalizeClass as s, createSlots as f, withCtx as e, createVNode as a, createTextVNode as w, toDisplayString as _, renderSlot as b } from "vue";
|
|
2
2
|
import { t as C } from "./locale.js";
|
|
3
|
-
import
|
|
4
|
-
import
|
|
3
|
+
import x from "./Button.js";
|
|
4
|
+
import g from "./Dropdown.js";
|
|
5
5
|
import B from "./Icon.js";
|
|
6
6
|
import { _ as D } from "./_plugin-vue_export-helper-dad06003.js";
|
|
7
7
|
import "lodash-es/get";
|
|
8
|
-
import "./Button.vue_used_vue_type_style_index_0_lang.module-
|
|
8
|
+
import "./Button.vue_used_vue_type_style_index_0_lang.module-63d31dc0.js";
|
|
9
9
|
import "./constants.js";
|
|
10
10
|
import "./clickoutside.js";
|
|
11
11
|
import "./utils/calculateElementOverflow.js";
|
|
@@ -25,23 +25,23 @@ const y = /* @__PURE__ */ c({
|
|
|
25
25
|
contentClass: { default: "" },
|
|
26
26
|
buttonText: { default: () => C("ll.actions") }
|
|
27
27
|
},
|
|
28
|
-
setup(
|
|
29
|
-
const
|
|
30
|
-
return (d,
|
|
31
|
-
align:
|
|
32
|
-
"content-class": [n(
|
|
33
|
-
class: s(n(
|
|
28
|
+
setup(r) {
|
|
29
|
+
const t = r, o = p();
|
|
30
|
+
return (d, N) => (m(), u(g, {
|
|
31
|
+
align: t.align,
|
|
32
|
+
"content-class": [n(o).dropdownContent, t.contentClass],
|
|
33
|
+
class: s(n(o).actionsDropdown)
|
|
34
34
|
}, f({
|
|
35
|
-
toggle: e(({ isActive:
|
|
36
|
-
a(
|
|
37
|
-
class: s(["button flex
|
|
35
|
+
toggle: e(({ isActive: l, toggle: i }) => [
|
|
36
|
+
a(x, {
|
|
37
|
+
class: s(["button tw-flex tw-w-full tw-items-center tw-justify-between tw-border tw-border-blue-500 tw-text-blue-500", [n(o).actionButton, { [n(o).disabled]: t.disabled }]]),
|
|
38
38
|
secondary: "",
|
|
39
|
-
"aria-expanded":
|
|
40
|
-
disabled:
|
|
39
|
+
"aria-expanded": l.toString(),
|
|
40
|
+
disabled: t.disabled,
|
|
41
41
|
onClick: i
|
|
42
42
|
}, {
|
|
43
43
|
default: e(() => [
|
|
44
|
-
_(
|
|
44
|
+
w(_(t.buttonText) + " ", 1),
|
|
45
45
|
a(B, {
|
|
46
46
|
class: "tw-ml-1.5",
|
|
47
47
|
name: "caret-down"
|
|
@@ -52,23 +52,23 @@ const y = /* @__PURE__ */ c({
|
|
|
52
52
|
]),
|
|
53
53
|
_: 2
|
|
54
54
|
}, [
|
|
55
|
-
|
|
55
|
+
t.disabled ? void 0 : {
|
|
56
56
|
name: "default",
|
|
57
57
|
fn: e(() => [
|
|
58
|
-
|
|
58
|
+
b(d.$slots, "default")
|
|
59
59
|
]),
|
|
60
60
|
key: "0"
|
|
61
61
|
}
|
|
62
62
|
]), 1032, ["align", "content-class", "class"]));
|
|
63
63
|
}
|
|
64
|
-
}), k = "
|
|
64
|
+
}), k = "_actionButton_144dr_2", S = "_disabled_144dr_12", M = "_dropdownContent_144dr_18", T = "_actionsDropdown_144dr_33", h = {
|
|
65
65
|
actionButton: k,
|
|
66
|
-
disabled:
|
|
67
|
-
dropdownContent:
|
|
68
|
-
actionsDropdown:
|
|
69
|
-
},
|
|
70
|
-
$style:
|
|
71
|
-
}, U = /* @__PURE__ */ D(y, [["__cssModules",
|
|
66
|
+
disabled: S,
|
|
67
|
+
dropdownContent: M,
|
|
68
|
+
actionsDropdown: T
|
|
69
|
+
}, A = {
|
|
70
|
+
$style: h
|
|
71
|
+
}, U = /* @__PURE__ */ D(y, [["__cssModules", A]]);
|
|
72
72
|
export {
|
|
73
73
|
U as default
|
|
74
74
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionsDropdown.js","sources":["../src/components/ActionsDropdown/ActionsDropdown.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n import { useCssModule } from 'vue';\n\n import { t } from '../../locale';\n import Button from '../Button/Button.vue';\n import Dropdown from '../Dropdown/Dropdown.vue';\n import Icon from '../Icon/Icon.vue';\n\n defineOptions({\n name: 'll-actions-dropdown',\n });\n\n export interface ActionsDropdownProps {\n /**\n * Used to position the dropdown relative to target\n * Options: left, right\n */\n align?: 'left' | 'right';\n /**\n * Indicates whether the trigger button is disabled or not\n */\n disabled?: boolean;\n /**\n * Class to be applied to the dropdown content\n */\n contentClass?: string;\n /**\n * Text to be displayed on the trigger button\n */\n buttonText?: string;\n }\n\n const props = withDefaults(defineProps<ActionsDropdownProps>(), {\n align: 'left',\n disabled: false,\n contentClass: '',\n buttonText: () => t('ll.actions'),\n });\n\n const classes = useCssModule();\n</script>\n\n<template>\n <Dropdown\n :align=\"props.align\"\n :content-class=\"[classes.dropdownContent, props.contentClass]\"\n :class=\"classes.actionsDropdown\"\n >\n <template #toggle=\"{ isActive, toggle }\">\n <Button\n class=\"button
|
|
1
|
+
{"version":3,"file":"ActionsDropdown.js","sources":["../src/components/ActionsDropdown/ActionsDropdown.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n import { useCssModule } from 'vue';\n\n import { t } from '../../locale';\n import Button from '../Button/Button.vue';\n import Dropdown from '../Dropdown/Dropdown.vue';\n import Icon from '../Icon/Icon.vue';\n\n defineOptions({\n name: 'll-actions-dropdown',\n });\n\n export interface ActionsDropdownProps {\n /**\n * Used to position the dropdown relative to target\n * Options: left, right\n */\n align?: 'left' | 'right';\n /**\n * Indicates whether the trigger button is disabled or not\n */\n disabled?: boolean;\n /**\n * Class to be applied to the dropdown content\n */\n contentClass?: string;\n /**\n * Text to be displayed on the trigger button\n */\n buttonText?: string;\n }\n\n const props = withDefaults(defineProps<ActionsDropdownProps>(), {\n align: 'left',\n disabled: false,\n contentClass: '',\n buttonText: () => t('ll.actions'),\n });\n\n const classes = useCssModule();\n</script>\n\n<template>\n <Dropdown\n :align=\"props.align\"\n :content-class=\"[classes.dropdownContent, props.contentClass]\"\n :class=\"classes.actionsDropdown\"\n >\n <template #toggle=\"{ isActive, toggle }\">\n <Button\n class=\"\n button\n tw-flex tw-w-full tw-items-center tw-justify-between tw-border tw-border-blue-500 tw-text-blue-500\n \"\n secondary\n :aria-expanded=\"isActive.toString()\"\n :class=\"[classes.actionButton, { [classes.disabled]: props.disabled }]\"\n :disabled=\"props.disabled\"\n @click=\"toggle\"\n >\n {{ props.buttonText }} <Icon class=\"tw-ml-1.5\" name=\"caret-down\" />\n </Button>\n </template>\n\n <template v-if=\"!props.disabled\" #default>\n <!-- @slot Dropdown content -->\n <slot></slot>\n </template>\n </Dropdown>\n</template>\n\n<style module>\n .actionButton {\n min-width: 156px;\n white-space: normal;\n }\n\n .actionButton:hover {\n background-color: var(--color-blue-100);\n border-color: var(--color-blue-500) !important;\n }\n\n .disabled {\n background-color: var(--color-ice-100) !important;\n border-color: var(--color-ice-500) !important;\n color: var(--color-ice-500) !important;\n }\n\n .dropdownContent {\n margin-top: 4px;\n }\n\n .dropdownContent:global(.dropdown__content) {\n margin-left: 0;\n margin-right: 0;\n max-width: 90vw;\n }\n\n .dropdownContent:global(.dropdown__content)::after {\n display: none;\n }\n\n @media screen('md') {\n .actionsDropdown {\n min-width: 156px;\n }\n\n .dropdownContent:global(.dropdown__content) {\n min-width: 156px;\n }\n }\n</style>\n"],"names":["classes","useCssModule"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuCQA,IAAUC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/AddressSelect.js
CHANGED
|
@@ -5,6 +5,7 @@ import C from "./useGoogleMaps.js";
|
|
|
5
5
|
import { DEBOUNCE as U } from "./constants.js";
|
|
6
6
|
import q from "./Select.js";
|
|
7
7
|
import "lodash-es/keyBy";
|
|
8
|
+
import "@leaflink/snitch";
|
|
8
9
|
import "lodash-es/isEmpty";
|
|
9
10
|
import "lodash-es/isEqual";
|
|
10
11
|
import "lodash-es/isPlainObject";
|
|
@@ -23,10 +24,10 @@ import "./Icon.js";
|
|
|
23
24
|
import "./index-79ce320f.js";
|
|
24
25
|
import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
|
|
25
26
|
import "./_plugin-vue_export-helper-dad06003.js";
|
|
26
|
-
import "./Field.vue_vue_type_script_setup_true_lang-
|
|
27
|
-
import "./Label.vue_vue_type_script_setup_true_lang-
|
|
27
|
+
import "./Field.vue_vue_type_script_setup_true_lang-42ba3c5a.js";
|
|
28
|
+
import "./Label.vue_vue_type_script_setup_true_lang-4b02087f.js";
|
|
28
29
|
import "./locale.js";
|
|
29
|
-
const _ = "address-select-",
|
|
30
|
+
const _ = "address-select-", ve = /* @__PURE__ */ M({
|
|
30
31
|
__name: "AddressSelect",
|
|
31
32
|
props: {
|
|
32
33
|
apiKey: { default: void 0 },
|
|
@@ -51,7 +52,7 @@ const _ = "address-select-", fe = /* @__PURE__ */ M({
|
|
|
51
52
|
const t = g, V = S(), d = A("stashOptions"), u = h(() => t.apiKey || (d == null ? void 0 : d.googleMapsApiKey));
|
|
52
53
|
if (!u.value)
|
|
53
54
|
throw new Error("Google Maps API key is required");
|
|
54
|
-
const { getPlaceDetails: b, getPlacePredictions: x } = C(u.value),
|
|
55
|
+
const { getPlaceDetails: b, getPlacePredictions: x } = C(u.value), i = n(!1), a = n(), r = n(), E = G(w, t.debounceTime), s = h(() => {
|
|
55
56
|
var e, p, m, c, f, v;
|
|
56
57
|
return [
|
|
57
58
|
[(e = t.modelValue) == null ? void 0 : e.street_address, (p = t.modelValue) == null ? void 0 : p.extended_address].filter(Boolean).join(" "),
|
|
@@ -62,18 +63,18 @@ const _ = "address-select-", fe = /* @__PURE__ */ M({
|
|
|
62
63
|
});
|
|
63
64
|
T(() => t.modelValue, () => {
|
|
64
65
|
var o;
|
|
65
|
-
if (
|
|
66
|
+
if (s.value && !((o = a.value) != null && o.length)) {
|
|
66
67
|
const e = {
|
|
67
68
|
id: t.modelValue.place_id || K(_),
|
|
68
|
-
name:
|
|
69
|
+
name: s.value,
|
|
69
70
|
address: t.modelValue
|
|
70
71
|
};
|
|
71
72
|
a.value = [e], r.value = e;
|
|
72
73
|
} else
|
|
73
|
-
|
|
74
|
+
s.value || (r.value = void 0, a.value = []);
|
|
74
75
|
}, { immediate: !0 });
|
|
75
76
|
async function w(o) {
|
|
76
|
-
|
|
77
|
+
i.value = !0;
|
|
77
78
|
try {
|
|
78
79
|
a.value = await x(o);
|
|
79
80
|
} catch (e) {
|
|
@@ -82,7 +83,7 @@ const _ = "address-select-", fe = /* @__PURE__ */ M({
|
|
|
82
83
|
else
|
|
83
84
|
throw e;
|
|
84
85
|
} finally {
|
|
85
|
-
|
|
86
|
+
i.value = !1;
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
89
|
async function B(o) {
|
|
@@ -115,7 +116,7 @@ const _ = "address-select-", fe = /* @__PURE__ */ M({
|
|
|
115
116
|
single: "",
|
|
116
117
|
"data-test": "select|address",
|
|
117
118
|
disabled: t.disabled,
|
|
118
|
-
loading:
|
|
119
|
+
loading: i.value,
|
|
119
120
|
options: a.value,
|
|
120
121
|
placeholder: t.placeholder,
|
|
121
122
|
label: t.label,
|
|
@@ -138,6 +139,6 @@ const _ = "address-select-", fe = /* @__PURE__ */ M({
|
|
|
138
139
|
}
|
|
139
140
|
});
|
|
140
141
|
export {
|
|
141
|
-
|
|
142
|
+
ve as default
|
|
142
143
|
};
|
|
143
144
|
//# sourceMappingURL=AddressSelect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddressSelect.js","sources":["../src/components/AddressSelect/AddressSelect.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import debounce from 'lodash-es/debounce';\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, inject, ref, useSlots, watch } from 'vue';\n\n import { StashProvideState } from '../../../types/misc';\n import useGoogleMaps, { type Address, type AddressOption } from '../../composables/useGoogleMaps/useGoogleMaps';\n import { DEBOUNCE } from '../../constants';\n import Select from '../Select/Select.vue';\n\n export interface AddressSelectProps {\n /**\n * Google Maps API Key. This takes precedence over the key defined in stashOptions\n */\n apiKey?: string;\n /**\n * Wether the Select is disabled or not\n */\n disabled?: boolean;\n /**\n * Select placeholder\n */\n placeholder?: string;\n /**\n * Debounce time in milliseconds to perform API requests on search\n */\n debounceTime?: number;\n /**\n * Model value address\n */\n modelValue: Address;\n /**\n * Hint text to be passed down to Select component\n */\n hintText?: string;\n /**\n * Error text to be passed down to Select component\n */\n errorText?: string;\n /**\n * Label text to be passed down to Select component\n */\n label?: string;\n /**\n * Disallows values from being de-selected\n */\n preventEmpty?: boolean;\n }\n\n const props = withDefaults(defineProps<AddressSelectProps>(), {\n disabled: false,\n placeholder: 'Type an address',\n debounceTime: DEBOUNCE.MEDIUM,\n modelValue: () => ({\n street_address: undefined,\n extended_address: undefined,\n city: undefined,\n state: undefined,\n postal_code: undefined,\n country: undefined,\n }),\n hintText: undefined,\n errorText: undefined,\n label: undefined,\n preventEmpty: false,\n apiKey: undefined,\n });\n\n const emit = defineEmits<{\n /**\n * Emitted when the model value changes\n */\n (e: 'update:modelValue', value: Address): void,\n /**\n * Emitted when an error occurs while reaching out to Google's API\n */\n (e: 'error', value: unknown): void\n }>();\n\n const slots = useSlots();\n const stashOptions = inject<StashProvideState>('stashOptions');\n\n const googleMapsApiKey = computed(() => props.apiKey || stashOptions?.googleMapsApiKey);\n\n if (!googleMapsApiKey.value) {\n throw new Error('Google Maps API key is required');\n }\n\n const { getPlaceDetails, getPlacePredictions } = useGoogleMaps(googleMapsApiKey.value);\n\n const ID_PREFIX = 'address-select-';\n\n const isLoading = ref(false);\n const options = ref<Array<AddressOption>>();\n const internalValue = ref<AddressOption>();\n\n const debouncedSearch = debounce(search, props.debounceTime);\n\n const formattedAddress = computed(() => {\n const formattedAddress = [\n [props.modelValue?.street_address, props.modelValue?.extended_address].filter(Boolean).join(' '),\n props.modelValue?.city,\n [props.modelValue?.state, props.modelValue?.postal_code].filter(Boolean).join(' '),\n props.modelValue?.country\n ].filter(Boolean).join(', ');\n\n return formattedAddress;\n });\n\n // When we don't have options just yet, we need to create them on our own\n watch(() => props.modelValue, () => {\n if (formattedAddress.value && !options.value?.length) {\n const option = {\n id: props.modelValue.place_id || uniqueId(ID_PREFIX),\n name: formattedAddress.value,\n address: props.modelValue,\n };\n\n options.value = [option];\n internalValue.value = option;\n } else if (!formattedAddress.value) {\n internalValue.value = undefined;\n options.value = [];\n }\n }, { immediate: true });\n\n async function search(query: string) {\n isLoading.value = true;\n\n try {\n options.value = await getPlacePredictions(query);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n options.value = [];\n if (error?.isGoogleMapsError) {\n emit('error', error);\n } else {\n throw error;\n }\n } finally {\n isLoading.value = false;\n }\n }\n\n async function select(option: AddressOption) {\n internalValue.value = option;\n\n // When an option is de-selected, the option will be undefined\n if (!option) {\n emit('update:modelValue', {\n street_address: undefined,\n extended_address: undefined,\n city: undefined,\n state: undefined,\n postal_code: undefined,\n country: undefined,\n });\n return;\n }\n\n // When an option does not have a google place id, we don't want to fetch it's details\n if (option.id.startsWith(ID_PREFIX) && option.address) {\n emit('update:modelValue', option.address);\n return;\n }\n\n try {\n const address = await getPlaceDetails(option.id);\n emit('update:modelValue', address);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n if (error?.isGoogleMapsError) {\n emit('error', error);\n } else {\n throw error;\n }\n }\n }\n</script>\n\n<template>\n <Select\n single\n data-test=\"select|address\"\n :disabled=\"props.disabled\"\n :loading=\"isLoading\"\n :options=\"options\"\n :placeholder=\"props.placeholder\"\n :label=\"props.label\"\n :hint-text=\"props.hintText\"\n :error=\"props.errorText\"\n :model-value=\"internalValue\"\n :prevent-empty=\"props.preventEmpty\"\n disable-filtering\n @search=\"debouncedSearch\"\n @update:model-value=\"select\"\n >\n <template v-if=\"slots.hint\" #hint>\n <slot name=\"hint\"></slot>\n </template>\n </Select>\n</template>\n"],"names":["ID_PREFIX","slots","useSlots","stashOptions","inject","googleMapsApiKey","computed","props","getPlaceDetails","getPlacePredictions","useGoogleMaps","isLoading","ref","options","internalValue","debouncedSearch","debounce","search","formattedAddress","_a","_b","_c","_d","_e","_f","watch","option","uniqueId","query","error","emit","select","address"],"mappings":"
|
|
1
|
+
{"version":3,"file":"AddressSelect.js","sources":["../src/components/AddressSelect/AddressSelect.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import debounce from 'lodash-es/debounce';\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, inject, ref, useSlots, watch } from 'vue';\n\n import { StashProvideState } from '../../../types/misc';\n import useGoogleMaps, { type Address, type AddressOption } from '../../composables/useGoogleMaps/useGoogleMaps';\n import { DEBOUNCE } from '../../constants';\n import Select from '../Select/Select.vue';\n\n export interface AddressSelectProps {\n /**\n * Google Maps API Key. This takes precedence over the key defined in stashOptions\n */\n apiKey?: string;\n /**\n * Wether the Select is disabled or not\n */\n disabled?: boolean;\n /**\n * Select placeholder\n */\n placeholder?: string;\n /**\n * Debounce time in milliseconds to perform API requests on search\n */\n debounceTime?: number;\n /**\n * Model value address\n */\n modelValue: Address;\n /**\n * Hint text to be passed down to Select component\n */\n hintText?: string;\n /**\n * Error text to be passed down to Select component\n */\n errorText?: string;\n /**\n * Label text to be passed down to Select component\n */\n label?: string;\n /**\n * Disallows values from being de-selected\n */\n preventEmpty?: boolean;\n }\n\n const props = withDefaults(defineProps<AddressSelectProps>(), {\n disabled: false,\n placeholder: 'Type an address',\n debounceTime: DEBOUNCE.MEDIUM,\n modelValue: () => ({\n street_address: undefined,\n extended_address: undefined,\n city: undefined,\n state: undefined,\n postal_code: undefined,\n country: undefined,\n }),\n hintText: undefined,\n errorText: undefined,\n label: undefined,\n preventEmpty: false,\n apiKey: undefined,\n });\n\n const emit = defineEmits<{\n /**\n * Emitted when the model value changes\n */\n (e: 'update:modelValue', value: Address): void,\n /**\n * Emitted when an error occurs while reaching out to Google's API\n */\n (e: 'error', value: unknown): void\n }>();\n\n const slots = useSlots();\n const stashOptions = inject<StashProvideState>('stashOptions');\n\n const googleMapsApiKey = computed(() => props.apiKey || stashOptions?.googleMapsApiKey);\n\n if (!googleMapsApiKey.value) {\n throw new Error('Google Maps API key is required');\n }\n\n const { getPlaceDetails, getPlacePredictions } = useGoogleMaps(googleMapsApiKey.value);\n\n const ID_PREFIX = 'address-select-';\n\n const isLoading = ref(false);\n const options = ref<Array<AddressOption>>();\n const internalValue = ref<AddressOption>();\n\n const debouncedSearch = debounce(search, props.debounceTime);\n\n const formattedAddress = computed(() => {\n const formattedAddress = [\n [props.modelValue?.street_address, props.modelValue?.extended_address].filter(Boolean).join(' '),\n props.modelValue?.city,\n [props.modelValue?.state, props.modelValue?.postal_code].filter(Boolean).join(' '),\n props.modelValue?.country\n ].filter(Boolean).join(', ');\n\n return formattedAddress;\n });\n\n // When we don't have options just yet, we need to create them on our own\n watch(() => props.modelValue, () => {\n if (formattedAddress.value && !options.value?.length) {\n const option = {\n id: props.modelValue.place_id || uniqueId(ID_PREFIX),\n name: formattedAddress.value,\n address: props.modelValue,\n };\n\n options.value = [option];\n internalValue.value = option;\n } else if (!formattedAddress.value) {\n internalValue.value = undefined;\n options.value = [];\n }\n }, { immediate: true });\n\n async function search(query: string) {\n isLoading.value = true;\n\n try {\n options.value = await getPlacePredictions(query);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n options.value = [];\n if (error?.isGoogleMapsError) {\n emit('error', error);\n } else {\n throw error;\n }\n } finally {\n isLoading.value = false;\n }\n }\n\n async function select(option: AddressOption) {\n internalValue.value = option;\n\n // When an option is de-selected, the option will be undefined\n if (!option) {\n emit('update:modelValue', {\n street_address: undefined,\n extended_address: undefined,\n city: undefined,\n state: undefined,\n postal_code: undefined,\n country: undefined,\n });\n return;\n }\n\n // When an option does not have a google place id, we don't want to fetch it's details\n if (option.id.startsWith(ID_PREFIX) && option.address) {\n emit('update:modelValue', option.address);\n return;\n }\n\n try {\n const address = await getPlaceDetails(option.id);\n emit('update:modelValue', address);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n if (error?.isGoogleMapsError) {\n emit('error', error);\n } else {\n throw error;\n }\n }\n }\n</script>\n\n<template>\n <Select\n single\n data-test=\"select|address\"\n :disabled=\"props.disabled\"\n :loading=\"isLoading\"\n :options=\"options\"\n :placeholder=\"props.placeholder\"\n :label=\"props.label\"\n :hint-text=\"props.hintText\"\n :error=\"props.errorText\"\n :model-value=\"internalValue\"\n :prevent-empty=\"props.preventEmpty\"\n disable-filtering\n @search=\"debouncedSearch\"\n @update:model-value=\"select\"\n >\n <template v-if=\"slots.hint\" #hint>\n <slot name=\"hint\"></slot>\n </template>\n </Select>\n</template>\n"],"names":["ID_PREFIX","slots","useSlots","stashOptions","inject","googleMapsApiKey","computed","props","getPlaceDetails","getPlacePredictions","useGoogleMaps","isLoading","ref","options","internalValue","debouncedSearch","debounce","search","formattedAddress","_a","_b","_c","_d","_e","_f","watch","option","uniqueId","query","error","emit","select","address"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0FE,MAAMA,IAAY;;;;;;;;;;;;;;;;;;;;;;iBAXZC,IAAQC,KACRC,IAAeC,EAA0B,cAAc,GAEvDC,IAAmBC,EAAS,MAAMC,EAAM,WAAUJ,KAAA,gBAAAA,EAAc,iBAAgB;AAElF,QAAA,CAACE,EAAiB;AACd,YAAA,IAAI,MAAM,iCAAiC;AAGnD,UAAM,EAAE,iBAAAG,GAAiB,qBAAAC,EAAA,IAAwBC,EAAcL,EAAiB,KAAK,GAI/EM,IAAYC,EAAI,EAAK,GACrBC,IAAUD,KACVE,IAAgBF,KAEhBG,IAAkBC,EAASC,GAAQV,EAAM,YAAY,GAErDW,IAAmBZ,EAAS,MAAM;;AAQ/BY,aAPkB;AAAA,QACvB,EAACC,IAAAZ,EAAM,eAAN,gBAAAY,EAAkB,iBAAgBC,IAAAb,EAAM,eAAN,gBAAAa,EAAkB,gBAAgB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,SAC/FC,IAAAd,EAAM,eAAN,gBAAAc,EAAkB;AAAA,QAClB,EAACC,IAAAf,EAAM,eAAN,gBAAAe,EAAkB,QAAOC,IAAAhB,EAAM,eAAN,gBAAAgB,EAAkB,WAAW,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,SACjFC,IAAAjB,EAAM,eAAN,gBAAAiB,EAAkB;AAAA,MAClB,EAAA,OAAO,OAAO,EAAE,KAAK,IAAI;AAAA,IAEpB,CACR;AAGK,IAAAC,EAAA,MAAMlB,EAAM,YAAY,MAAM;;AAClC,UAAIW,EAAiB,SAAS,GAACC,IAAAN,EAAQ,UAAR,QAAAM,EAAe,SAAQ;AACpD,cAAMO,IAAS;AAAA,UACb,IAAInB,EAAM,WAAW,YAAYoB,EAAS3B,CAAS;AAAA,UACnD,MAAMkB,EAAiB;AAAA,UACvB,SAASX,EAAM;AAAA,QAAA;AAGT,QAAAM,EAAA,QAAQ,CAACa,CAAM,GACvBZ,EAAc,QAAQY;AAAA,MAAA;AACxB,QAAYR,EAAiB,UAC3BJ,EAAc,QAAQ,QACtBD,EAAQ,QAAQ;IAClB,GACC,EAAE,WAAW,GAAA,CAAM;AAEtB,mBAAeI,EAAOW,GAAe;AACnC,MAAAjB,EAAU,QAAQ;AAEd,UAAA;AACM,QAAAE,EAAA,QAAQ,MAAMJ,EAAoBmB,CAAK;AAAA,eAExCC,GAAY;AAEnB,YADAhB,EAAQ,QAAQ,IACZgB,KAAA,QAAAA,EAAO;AACT,UAAAC,EAAK,SAASD,CAAK;AAAA;AAEb,gBAAAA;AAAA,MACR,UACA;AACA,QAAAlB,EAAU,QAAQ;AAAA,MACpB;AAAA,IACF;AAEA,mBAAeoB,EAAOL,GAAuB;AAI3C,UAHAZ,EAAc,QAAQY,GAGlB,CAACA,GAAQ;AACX,QAAAI,EAAK,qBAAqB;AAAA,UACxB,gBAAgB;AAAA,UAChB,kBAAkB;AAAA,UAClB,MAAM;AAAA,UACN,OAAO;AAAA,UACP,aAAa;AAAA,UACb,SAAS;AAAA,QAAA,CACV;AACD;AAAA,MACF;AAGA,UAAIJ,EAAO,GAAG,WAAW1B,CAAS,KAAK0B,EAAO,SAAS;AAChD,QAAAI,EAAA,qBAAqBJ,EAAO,OAAO;AACxC;AAAA,MACF;AAEI,UAAA;AACF,cAAMM,IAAU,MAAMxB,EAAgBkB,EAAO,EAAE;AAC/C,QAAAI,EAAK,qBAAqBE,CAAO;AAAA,eAE1BH,GAAY;AACnB,YAAIA,KAAA,QAAAA,EAAO;AACT,UAAAC,EAAK,SAASD,CAAK;AAAA;AAEb,gBAAAA;AAAA,MAEV;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/Alert.js
CHANGED
|
@@ -19,10 +19,10 @@ const z = { class: "tw-m-0" }, A = /* @__PURE__ */ x({
|
|
|
19
19
|
variant: { default: "outlined" }
|
|
20
20
|
},
|
|
21
21
|
setup(b) {
|
|
22
|
-
const e = b, g = B("close-icon"), _ = $(), a = C(), c = I(!0),
|
|
23
|
-
return (
|
|
22
|
+
const e = b, g = B("close-icon"), _ = $(), a = C(), c = I(!0), u = s(() => M[y(e.severity)]), h = s(() => N[y(e.severity)]), k = s(() => e.variant === "filled" && ["warning", "success"].includes(e.severity) ? "tw-text-ice-900" : e.variant === "filled" && ["info", "error"].includes(e.severity) ? "tw-text-white" : `tw-text-${h.value}`), n = s(() => e.variant === "filled" && ["info", "error"].includes(e.severity) ? "tw-text-white" : "tw-text-ice-900");
|
|
23
|
+
return (d, v) => c.value ? S((i(), l("div", {
|
|
24
24
|
key: 0,
|
|
25
|
-
class: r(["stash-alert tw-
|
|
25
|
+
class: r(["stash-alert tw-relative tw-flex tw-items-center tw-border tw-border-solid tw-p-3 tw-leading-6", [
|
|
26
26
|
`stash-alert--${e.severity}`,
|
|
27
27
|
`stash-alert--${e.variant}`,
|
|
28
28
|
n.value,
|
|
@@ -47,26 +47,26 @@ const z = { class: "tw-m-0" }, A = /* @__PURE__ */ x({
|
|
|
47
47
|
"data-test": "stash-alert"
|
|
48
48
|
}, [
|
|
49
49
|
w(p, {
|
|
50
|
-
class: r(["stash-alert__icon", [t(a).iconInfo, k.value, `stash-alert__icon--${
|
|
51
|
-
name:
|
|
50
|
+
class: r(["stash-alert__icon", [t(a).iconInfo, k.value, `stash-alert__icon--${u.value}`]]),
|
|
51
|
+
name: u.value,
|
|
52
52
|
title: `${e.severity} icon`,
|
|
53
53
|
"data-test": "stash-alert|status-icon"
|
|
54
54
|
}, null, 8, ["class", "name", "title"]),
|
|
55
55
|
f("div", {
|
|
56
|
-
class: r(["tw-flex tw-flex-1 tw-
|
|
56
|
+
class: r(["tw-flex tw-flex-1 tw-flex-wrap tw-px-2", {
|
|
57
57
|
"tw-justify-center": e.centered,
|
|
58
58
|
"tw-justify-between": !e.centered
|
|
59
59
|
}])
|
|
60
60
|
}, [
|
|
61
61
|
f("p", z, [
|
|
62
|
-
m(
|
|
62
|
+
m(d.$slots, "default")
|
|
63
63
|
]),
|
|
64
64
|
t(_).link ? (i(), l("div", {
|
|
65
65
|
key: 0,
|
|
66
|
-
class: r(["stash-alert__link tw-pointer tw-underline hover:tw-no-underline", [t(a).link, n.value, { "tw-ml-2": e.centered }]]),
|
|
66
|
+
class: r(["stash-alert__link tw-cursor-pointer tw-underline hover:tw-no-underline", [t(a).link, n.value, { "tw-ml-2": e.centered }]]),
|
|
67
67
|
"data-test": "stash-alert|link"
|
|
68
68
|
}, [
|
|
69
|
-
m(
|
|
69
|
+
m(d.$slots, "link")
|
|
70
70
|
], 2)) : o("", !0)
|
|
71
71
|
], 2),
|
|
72
72
|
e.permanent ? o("", !0) : (i(), l("button", {
|
package/dist/Alert.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert.js","sources":["../src/components/Alert/Alert.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import capitalize from 'lodash-es/capitalize';\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, ref, useCssModule, useSlots } from 'vue';\n\n import { StatusColor, StatusColors, StatusIcon, StatusIcons, StatusSeverity } from '../../../types/statusLevels';\n import vSticky from '../../directives/sticky/sticky';\n import Icon from '../Icon/Icon.vue';\n\n defineOptions({\n name: 'll-alert',\n });\n\n export interface AlertProps {\n /**\n * Determines if the alert is centered\n */\n centered?: boolean;\n\n /**\n * Determines if the alert is permanent (doesn't have a close button).\n */\n permanent?: boolean;\n\n /**\n * The type of border radius to use. Available types:\n *\n * - `none` - no border radius\n * - `standard` - 4px border radius\n */\n radius?: 'none' | 'standard';\n\n /**\n * The type of alert. Available types:\n *\n * - `info`\n * - `success`\n * - `warning`\n * - `error`\n */\n severity?: StatusSeverity;\n\n /**\n * Determines if the alert is sticky. By default, it's not sticky. The provided `number` value is a top offset of alert.\n */\n sticky?: number | null;\n\n /**\n * The variant of alert. Available variants:\n *\n * - `filled` - previously alert component\n * - `outlined` - previously banner component\n */\n variant?: 'outlined' | 'filled';\n }\n\n const props = withDefaults(defineProps<AlertProps>(), {\n centered: false,\n permanent: false,\n radius: 'standard',\n severity: 'info',\n sticky: null,\n variant: 'outlined',\n });\n\n const iconId = uniqueId('close-icon');\n const slots = useSlots();\n const classes = useCssModule();\n const show = ref(true);\n const icon = computed<StatusIcon>(() => StatusIcons[capitalize(props.severity)]);\n const color = computed<StatusColor>(() => StatusColors[capitalize(props.severity)]);\n\n const iconColor = computed<string>(() => {\n if (props.variant === 'filled' && ['warning', 'success'].includes(props.severity)) {\n return 'tw-text-ice-900';\n }\n\n if (props.variant === 'filled' && ['info', 'error'].includes(props.severity)) {\n return 'tw-text-white';\n }\n\n return `tw-text-${color.value}`;\n });\n\n const computedTextColor = computed<string>(() => {\n if (props.variant === 'filled' && ['info', 'error'].includes(props.severity)) {\n return 'tw-text-white';\n }\n\n return 'tw-text-ice-900';\n });\n</script>\n\n<template>\n <div\n v-if=\"show\"\n v-sticky=\"props.sticky\"\n class=\"stash-alert tw-
|
|
1
|
+
{"version":3,"file":"Alert.js","sources":["../src/components/Alert/Alert.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import capitalize from 'lodash-es/capitalize';\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, ref, useCssModule, useSlots } from 'vue';\n\n import { StatusColor, StatusColors, StatusIcon, StatusIcons, StatusSeverity } from '../../../types/statusLevels';\n import vSticky from '../../directives/sticky/sticky';\n import Icon from '../Icon/Icon.vue';\n\n defineOptions({\n name: 'll-alert',\n });\n\n export interface AlertProps {\n /**\n * Determines if the alert is centered\n */\n centered?: boolean;\n\n /**\n * Determines if the alert is permanent (doesn't have a close button).\n */\n permanent?: boolean;\n\n /**\n * The type of border radius to use. Available types:\n *\n * - `none` - no border radius\n * - `standard` - 4px border radius\n */\n radius?: 'none' | 'standard';\n\n /**\n * The type of alert. Available types:\n *\n * - `info`\n * - `success`\n * - `warning`\n * - `error`\n */\n severity?: StatusSeverity;\n\n /**\n * Determines if the alert is sticky. By default, it's not sticky. The provided `number` value is a top offset of alert.\n */\n sticky?: number | null;\n\n /**\n * The variant of alert. Available variants:\n *\n * - `filled` - previously alert component\n * - `outlined` - previously banner component\n */\n variant?: 'outlined' | 'filled';\n }\n\n const props = withDefaults(defineProps<AlertProps>(), {\n centered: false,\n permanent: false,\n radius: 'standard',\n severity: 'info',\n sticky: null,\n variant: 'outlined',\n });\n\n const iconId = uniqueId('close-icon');\n const slots = useSlots();\n const classes = useCssModule();\n const show = ref(true);\n const icon = computed<StatusIcon>(() => StatusIcons[capitalize(props.severity)]);\n const color = computed<StatusColor>(() => StatusColors[capitalize(props.severity)]);\n\n const iconColor = computed<string>(() => {\n if (props.variant === 'filled' && ['warning', 'success'].includes(props.severity)) {\n return 'tw-text-ice-900';\n }\n\n if (props.variant === 'filled' && ['info', 'error'].includes(props.severity)) {\n return 'tw-text-white';\n }\n\n return `tw-text-${color.value}`;\n });\n\n const computedTextColor = computed<string>(() => {\n if (props.variant === 'filled' && ['info', 'error'].includes(props.severity)) {\n return 'tw-text-white';\n }\n\n return 'tw-text-ice-900';\n });\n</script>\n\n<template>\n <div\n v-if=\"show\"\n v-sticky=\"props.sticky\"\n class=\"stash-alert tw-relative tw-flex tw-items-center tw-border tw-border-solid tw-p-3 tw-leading-6\"\n :class=\"[\n `stash-alert--${props.severity}`,\n `stash-alert--${props.variant}`,\n computedTextColor,\n {\n 'tw-my-6': props.variant === 'outlined', // Todo - this makes ZERO sense. We should remove this altogether and let the consumer handle the margin.\n 'tw-rounded': props.radius === 'standard',\n 'tw-border-red-500': props.severity === 'error',\n 'tw-border-orange-500': props.severity === 'warning',\n 'tw-border-blue-500': props.severity === 'info',\n 'tw-border-green-500': props.severity === 'success',\n 'tw-bg-red-500': props.severity === 'error' && props.variant === 'filled',\n 'tw-bg-orange-500': props.severity === 'warning' && props.variant === 'filled',\n 'tw-bg-blue-500': props.severity === 'info' && props.variant === 'filled',\n 'tw-bg-green-500': props.severity === 'success' && props.variant === 'filled',\n 'tw-bg-red-100': props.severity === 'error' && props.variant === 'outlined',\n 'tw-bg-orange-100': props.severity === 'warning' && props.variant === 'outlined',\n 'tw-bg-blue-100': props.severity === 'info' && props.variant === 'outlined',\n 'tw-bg-green-100': props.severity === 'success' && props.variant === 'outlined',\n },\n ]\"\n data-test=\"stash-alert\"\n >\n <Icon\n class=\"stash-alert__icon\"\n :class=\"[classes.iconInfo, iconColor, `stash-alert__icon--${icon}`]\"\n :name=\"icon\"\n :title=\"`${props.severity} icon`\"\n data-test=\"stash-alert|status-icon\"\n />\n\n <!-- Alert text elements -->\n <div\n class=\"tw-flex tw-flex-1 tw-flex-wrap tw-px-2\"\n :class=\"{\n 'tw-justify-center': props.centered,\n 'tw-justify-between': !props.centered,\n }\"\n >\n <p class=\"tw-m-0\">\n <slot></slot>\n </p>\n\n <div\n v-if=\"slots.link\"\n class=\"stash-alert__link tw-cursor-pointer tw-underline hover:tw-no-underline\"\n :class=\"[classes.link, computedTextColor, { 'tw-ml-2': props.centered }]\"\n data-test=\"stash-alert|link\"\n >\n <slot name=\"link\"></slot>\n </div>\n </div>\n\n <button\n v-if=\"!props.permanent\"\n class=\"stash-alert__close\"\n :class=\"[classes.button, computedTextColor]\"\n type=\"button\"\n data-test=\"stash-alert|close\"\n @click=\"show = false\"\n >\n <Icon :id=\"iconId\" name=\"close\" title=\"Dismiss alert\" />\n </button>\n </div>\n</template>\n\n<style module>\n :global(.stash-alert__link) {\n a,\n button {\n color: var(--color-ice-900);\n cursor: pointer;\n text-decoration: underline;\n\n &:hover {\n text-decoration: none;\n }\n }\n }\n\n :global(.stash-alert--filled.stash-alert--error),\n :global(.stash-alert--filled.stash-alert--info) {\n :global(.stash-alert__link) a,\n :global(.stash-alert__link) button {\n color: theme('colors.white');\n }\n }\n</style>\n"],"names":["iconId","uniqueId","slots","useSlots","classes","useCssModule","show","ref","icon","computed","StatusIcons","capitalize","props","color","StatusColors","iconColor","computedTextColor"],"mappings":";;;;;;;;;;;;;;;;;;;;;iBAiEQA,IAASC,EAAS,YAAY,GAC9BC,IAAQC,KACRC,IAAUC,KACVC,IAAOC,EAAI,EAAI,GACfC,IAAOC,EAAqB,MAAMC,EAAYC,EAAWC,EAAM,QAAQ,CAAC,CAAC,GACzEC,IAAQJ,EAAsB,MAAMK,EAAaH,EAAWC,EAAM,QAAQ,CAAC,CAAC,GAE5EG,IAAYN,EAAiB,MAC7BG,EAAM,YAAY,YAAY,CAAC,WAAW,SAAS,EAAE,SAASA,EAAM,QAAQ,IACvE,oBAGLA,EAAM,YAAY,YAAY,CAAC,QAAQ,OAAO,EAAE,SAASA,EAAM,QAAQ,IAClE,kBAGF,WAAWC,EAAM,KAAK,EAC9B,GAEKG,IAAoBP,EAAiB,MACrCG,EAAM,YAAY,YAAY,CAAC,QAAQ,OAAO,EAAE,SAASA,EAAM,QAAQ,IAClE,kBAGF,iBACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { _ as
|
|
1
|
+
import { defineComponent as _, ref as v, useSlots as y, resolveComponent as $, openBlock as a, createElementBlock as r, unref as b, createBlock as h, normalizeClass as n, withCtx as m, createElementVNode as s, createVNode as o, toDisplayString as d, renderSlot as p } from "vue";
|
|
2
|
+
import { _ as k } from "./Expand.vue_vue_type_script_setup_true_lang-1751f4a6.js";
|
|
3
3
|
import i from "./Icon.js";
|
|
4
|
-
import { _ as
|
|
4
|
+
import { _ as x } from "./_plugin-vue_export-helper-dad06003.js";
|
|
5
5
|
import "lodash-es/uniqueId";
|
|
6
6
|
import "./index-79ce320f.js";
|
|
7
7
|
import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
|
|
8
|
-
const C = { class: "flex-1
|
|
8
|
+
const C = { class: "tw-flex tw-flex-1 tw-items-center tw-overflow-hidden" }, A = { class: "tw-truncate" }, B = { key: 1 }, I = { class: "tw-flex tw-flex-1 tw-items-center tw-overflow-hidden" }, N = { class: "tw-truncate" }, g = /* @__PURE__ */ _({
|
|
9
9
|
__name: "AppNavigationItem",
|
|
10
10
|
props: {
|
|
11
11
|
to: {},
|
|
@@ -14,13 +14,13 @@ const C = { class: "flex-1 flex items-center overflow-hidden" }, A = { class: "t
|
|
|
14
14
|
isActive: { type: Boolean, default: !1 }
|
|
15
15
|
},
|
|
16
16
|
setup(u) {
|
|
17
|
-
const t = u, l =
|
|
17
|
+
const t = u, l = v(!1), f = y();
|
|
18
18
|
return (e, c) => {
|
|
19
|
-
const
|
|
20
|
-
return
|
|
21
|
-
b(f)["sub-items"] ? (
|
|
19
|
+
const w = $("router-link");
|
|
20
|
+
return a(), r("li", null, [
|
|
21
|
+
b(f)["sub-items"] ? (a(), r("div", B, [
|
|
22
22
|
s("button", {
|
|
23
|
-
class:
|
|
23
|
+
class: n([[e.$style.item, { [e.$style.expanded]: l.value }], "tw-flex tw-w-full tw-items-center tw-justify-between tw-font-normal tw-capitalize"]),
|
|
24
24
|
onClick: c[0] || (c[0] = () => l.value = !l.value)
|
|
25
25
|
}, [
|
|
26
26
|
s("div", I, [
|
|
@@ -28,30 +28,30 @@ const C = { class: "flex-1 flex items-center overflow-hidden" }, A = { class: "t
|
|
|
28
28
|
name: t.icon,
|
|
29
29
|
class: "tw-mr-3"
|
|
30
30
|
}, null, 8, ["name"]),
|
|
31
|
-
s("span", N,
|
|
31
|
+
s("span", N, d(t.label), 1)
|
|
32
32
|
]),
|
|
33
33
|
o(i, {
|
|
34
|
-
class:
|
|
34
|
+
class: n([e.$style.caret, { [e.$style.expandedIcon]: l.value }]),
|
|
35
35
|
name: "chevron-left"
|
|
36
36
|
}, null, 8, ["class"])
|
|
37
37
|
], 2),
|
|
38
|
-
o(
|
|
38
|
+
o(k, {
|
|
39
39
|
"is-expanded": l.value,
|
|
40
|
-
class:
|
|
40
|
+
class: n(e.$style.expand)
|
|
41
41
|
}, {
|
|
42
42
|
default: m(() => [
|
|
43
43
|
s("ul", {
|
|
44
|
-
class:
|
|
44
|
+
class: n(e.$style["sub-items"])
|
|
45
45
|
}, [
|
|
46
|
-
|
|
46
|
+
p(e.$slots, "sub-items")
|
|
47
47
|
], 2)
|
|
48
48
|
]),
|
|
49
49
|
_: 3
|
|
50
50
|
}, 8, ["is-expanded", "class"])
|
|
51
|
-
])) : (
|
|
51
|
+
])) : (a(), h(w, {
|
|
52
52
|
key: 0,
|
|
53
53
|
to: t.to,
|
|
54
|
-
class:
|
|
54
|
+
class: n([[e.$style.item, { [e.$style.active]: t.isActive }], "tw-flex tw-w-full tw-items-center tw-justify-between tw-font-normal tw-capitalize"]),
|
|
55
55
|
"active-class": e.$style.active
|
|
56
56
|
}, {
|
|
57
57
|
default: m(() => [
|
|
@@ -60,24 +60,24 @@ const C = { class: "flex-1 flex items-center overflow-hidden" }, A = { class: "t
|
|
|
60
60
|
name: t.icon,
|
|
61
61
|
class: "tw-mr-3"
|
|
62
62
|
}, null, 8, ["name"]),
|
|
63
|
-
s("span", A,
|
|
63
|
+
s("span", A, d(t.label), 1)
|
|
64
64
|
]),
|
|
65
|
-
|
|
65
|
+
p(e.$slots, "default")
|
|
66
66
|
]),
|
|
67
67
|
_: 3
|
|
68
68
|
}, 8, ["to", "class", "active-class"]))
|
|
69
69
|
]);
|
|
70
70
|
};
|
|
71
71
|
}
|
|
72
|
-
}), z = "
|
|
72
|
+
}), z = "_item_n8mr7_2", E = "_expanded_n8mr7_19", S = "_active_n8mr7_23", j = "_caret_n8mr7_29", M = {
|
|
73
73
|
item: z,
|
|
74
|
-
"sub-items": "_sub-
|
|
74
|
+
"sub-items": "_sub-items_n8mr7_15",
|
|
75
75
|
expanded: E,
|
|
76
76
|
active: S,
|
|
77
77
|
caret: j
|
|
78
78
|
}, V = {
|
|
79
79
|
$style: M
|
|
80
|
-
}, L = /* @__PURE__ */
|
|
80
|
+
}, L = /* @__PURE__ */ x(g, [["__cssModules", V]]);
|
|
81
81
|
export {
|
|
82
82
|
L as default
|
|
83
83
|
};
|