@frollo/frollo-web-ui 9.0.0 → 9.0.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.
- package/cjs/index.js +10733 -3060
- package/esm/{_rollupPluginBabelHelpers-DODWUb5N.js → _rollupPluginBabelHelpers-BKlDnZ7n.js} +1 -1
- package/esm/fw-accordion.js +15 -18
- package/esm/fw-alert.js +32 -25
- package/esm/fw-bar-chart.js +265 -93
- package/esm/fw-button-DZTHZLjk.js +318 -0
- package/esm/fw-button.js +2 -2
- package/esm/{fw-card-D45R4kN-.js → fw-card-XGtsK2bM.js} +7 -10
- package/esm/fw-card.js +2 -2
- package/esm/fw-checkbox.js +8 -11
- package/esm/fw-date-picker.js +85 -49
- package/esm/fw-drawer.js +8 -8
- package/esm/{fw-dropdown-58wyuzsW.js → fw-dropdown-CSmYTm5O.js} +11 -14
- package/esm/fw-dropdown.js +7 -6
- package/esm/fw-form.js +1 -1
- package/esm/fw-icons.js +11 -12
- package/esm/fw-image-A2lXYs0u.js +325 -0
- package/esm/fw-image.js +5 -4
- package/esm/{fw-input-C2-cZ-BY.js → fw-input-BiPWWfK3.js} +12 -19
- package/esm/fw-input.js +3 -3
- package/esm/fw-loading-bar-3x4tkF1B.js +37 -0
- package/esm/fw-loading.js +89 -40
- package/esm/fw-media-picker.js +10 -653
- package/esm/fw-modal.js +11 -10
- package/esm/fw-navigation-menu.js +36 -41
- package/esm/fw-popover-BZ-zqUme.js +330 -0
- package/esm/fw-popover.js +2 -3
- package/esm/fw-progress-bar.js +1 -1
- package/esm/fw-provider-list.js +109 -87
- package/esm/fw-sidebar-menu.js +58 -51
- package/esm/fw-slider.js +64 -61
- package/esm/fw-switch.js +76 -49
- package/esm/fw-table-row-D6FdCJMs.js +447 -0
- package/esm/fw-table.js +5 -6
- package/esm/fw-tabs.js +87 -35
- package/esm/fw-tag-BRxPc4zc.js +199 -0
- package/esm/fw-tag.js +4 -4
- package/esm/fw-toast.js +58 -76
- package/esm/fw-transactions-card.js +20 -20
- package/esm/{get-root-colours-DCjlYelc.js → get-root-colours-DCCAnRF4.js} +3 -1
- package/esm/index-C8z11jcJ.js +7583 -0
- package/esm/index-DHyRsKsZ.js +843 -0
- package/esm/index-eP2GMSdQ.js +755 -0
- package/esm/index.js +54 -61
- package/esm/{uniqueId-DZdGzBh8.js → uniqueId-DK6xzFd8.js} +1 -1
- package/esm/{vee-validate.esm-3ptvCDR1.js → vee-validate-0dtT5GSQ.js} +182 -305
- package/frollo-web-ui.esm.js +10790 -3115
- package/icons/circle-check.svg +4 -0
- package/index.d.ts +1522 -586
- package/package.json +18 -18
- package/styles/web-components.scss +84 -1
- package/types/components/fw-accordion/fw-accordion.vue.d.ts +9 -7
- package/types/components/fw-alert/fw-alert.vue.d.ts +11 -6
- package/types/components/fw-bar-chart/fw-bar-chart.vue.d.ts +15 -64
- package/types/components/fw-button/fw-button.vue.d.ts +11 -7
- package/types/components/fw-card/fw-card.vue.d.ts +6 -6
- package/types/components/fw-checkbox/fw-checkbox.vue.d.ts +365 -5
- package/types/components/fw-date-picker/fw-date-picker.vue.d.ts +3 -242
- package/types/components/fw-drawer/fw-drawer.vue.d.ts +11 -8
- package/types/components/fw-dropdown/fw-dropdown.vue.d.ts +20 -12
- package/types/components/fw-icons/fw-success-animation.vue.d.ts +1 -1
- package/types/components/fw-image/fw-image.vue.d.ts +33 -7
- package/types/components/fw-input/fw-input.vue.d.ts +368 -10
- package/types/components/fw-loading/fw-loading-bar.vue.d.ts +7 -5
- package/types/components/fw-loading/fw-loading-card.vue.d.ts +3 -1
- package/types/components/fw-loading/fw-loading-dots.vue.d.ts +8 -1
- package/types/components/fw-loading/fw-loading-table.vue.d.ts +11 -6
- package/types/components/fw-media-picker/fw-media-picker.vue.d.ts +27 -18
- package/types/components/fw-modal/fw-modal.vue.d.ts +11 -7
- package/types/components/fw-navigation-menu/fw-navigation-menu.vue.d.ts +12 -8
- package/types/components/fw-popover/fw-popover.vue.d.ts +16 -21
- package/types/components/fw-progress-bar/fw-progress-bar.vue.d.ts +6 -4
- package/types/components/fw-provider-list/fw-provider-list.vue.d.ts +20 -45
- package/types/components/fw-sidebar-menu/fw-sidebar-menu.vue.d.ts +13 -7
- package/types/components/fw-slider/fw-slider.vue.d.ts +11 -8
- package/types/components/fw-switch/fw-switch.vue.d.ts +383 -9
- package/types/components/fw-switch/index.types.d.ts +1 -0
- package/types/components/fw-table/fw-table-head.vue.d.ts +1 -1
- package/types/components/fw-table/fw-table-row.vue.d.ts +1 -1
- package/types/components/fw-table/fw-table.vue.d.ts +40 -19
- package/types/components/fw-table/index.types.d.ts +36 -2
- package/types/components/fw-tabs/fw-tab.vue.d.ts +4 -8
- package/types/components/fw-tabs/fw-tabs.vue.d.ts +11 -8
- package/types/components/fw-tabs/index.types.d.ts +14 -4
- package/types/components/fw-tag/fw-tag.vue.d.ts +14 -8
- package/types/components/fw-toast/fw-toast.vue.d.ts +17 -22
- package/types/components/fw-transactions-card/fw-transactions-card.vue.d.ts +6 -3
- package/types/directives/lazy-loader.d.ts +11 -2
- package/types/helpers/get-root-colours.d.ts +1 -0
- package/web-components/index.js +16793 -7700
- package/esm/fw-button-CnQvA7oM.js +0 -296
- package/esm/fw-image-D-OHafdw.js +0 -217
- package/esm/fw-loading-bar-DecYSBC_.js +0 -45
- package/esm/fw-popover-B4bsfuxm.js +0 -620
- package/esm/fw-table-row-C61Bi8KB.js +0 -389
- package/esm/fw-tag-FWH6KttB.js +0 -177
- package/esm/index-BsEH8YYr.js +0 -979
package/esm/fw-provider-list.js
CHANGED
|
@@ -1,26 +1,41 @@
|
|
|
1
|
-
import { e as _defineProperty } from './_rollupPluginBabelHelpers-
|
|
2
|
-
import { defineComponent,
|
|
3
|
-
import { a as script, s as script$1, _ as __default__$4 } from './fw-table-row-
|
|
4
|
-
import { _ as __default__$3 } from './fw-input-
|
|
5
|
-
import { _ as __default__$1 } from './fw-tag-
|
|
6
|
-
import { s as script$2 } from './fw-button-
|
|
7
|
-
import { _ as __default__$2 } from './fw-dropdown-
|
|
8
|
-
import { l as render$1, m as render$2, n as render$3 } from './index-
|
|
9
|
-
import { u as useColours } from './get-root-colours-
|
|
1
|
+
import { f as _createForOfIteratorHelper, e as _defineProperty, b as _toConsumableArray } from './_rollupPluginBabelHelpers-BKlDnZ7n.js';
|
|
2
|
+
import { ref, watch, defineComponent, shallowRef, computed, useCssVars, resolveComponent, createElementBlock, openBlock, createElementVNode, toDisplayString, createVNode, withCtx, createBlock, createCommentVNode, createTextVNode } from 'vue';
|
|
3
|
+
import { a as script, s as script$1, _ as __default__$4 } from './fw-table-row-D6FdCJMs.js';
|
|
4
|
+
import { _ as __default__$3 } from './fw-input-BiPWWfK3.js';
|
|
5
|
+
import { _ as __default__$1 } from './fw-tag-BRxPc4zc.js';
|
|
6
|
+
import { s as script$2 } from './fw-button-DZTHZLjk.js';
|
|
7
|
+
import { _ as __default__$2 } from './fw-dropdown-CSmYTm5O.js';
|
|
8
|
+
import { l as render$1, m as render$2, n as render$3 } from './index-DHyRsKsZ.js';
|
|
9
|
+
import { u as useColours } from './get-root-colours-DCCAnRF4.js';
|
|
10
10
|
import { s as styleInject } from './style-inject.es-tgCJW-Cu.js';
|
|
11
11
|
import './fw-button.js';
|
|
12
12
|
import './fw-loading.js';
|
|
13
|
-
import './fw-loading-bar-
|
|
14
|
-
import './vee-validate
|
|
15
|
-
import './fw-image-
|
|
13
|
+
import './fw-loading-bar-3x4tkF1B.js';
|
|
14
|
+
import './vee-validate-0dtT5GSQ.js';
|
|
15
|
+
import './fw-image-A2lXYs0u.js';
|
|
16
16
|
|
|
17
|
+
// tiny debounce helper (no deps)
|
|
18
|
+
var useDebouncedRef = function useDebouncedRef(initial) {
|
|
19
|
+
var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 150;
|
|
20
|
+
var state = ref(initial);
|
|
21
|
+
var debounced = ref(initial);
|
|
22
|
+
var timeNum;
|
|
23
|
+
watch(state, function (val) {
|
|
24
|
+
window.clearTimeout(timeNum);
|
|
25
|
+
timeNum = window.setTimeout(function () {
|
|
26
|
+
debounced.value = val;
|
|
27
|
+
}, delay);
|
|
28
|
+
}, {
|
|
29
|
+
flush: 'sync'
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
state: state,
|
|
33
|
+
debounced: debounced
|
|
34
|
+
};
|
|
35
|
+
};
|
|
17
36
|
var __default__ = defineComponent({
|
|
18
37
|
name: 'FwProviderList',
|
|
19
|
-
emits: [
|
|
20
|
-
/**
|
|
21
|
-
* Emits the number of filtered items the user sees.
|
|
22
|
-
*/
|
|
23
|
-
'changed'],
|
|
38
|
+
emits: ['changed'],
|
|
24
39
|
components: {
|
|
25
40
|
FwTable: __default__$4,
|
|
26
41
|
FwInput: __default__$3,
|
|
@@ -34,94 +49,101 @@ var __default__ = defineComponent({
|
|
|
34
49
|
SolidXMarkSvg: render$1
|
|
35
50
|
},
|
|
36
51
|
props: {
|
|
37
|
-
/**
|
|
38
|
-
* The header heading of the list.
|
|
39
|
-
*/
|
|
40
52
|
heading: {
|
|
41
53
|
type: String
|
|
42
54
|
},
|
|
43
|
-
/**
|
|
44
|
-
* The list items of the table items.
|
|
45
|
-
*/
|
|
46
55
|
items: {
|
|
47
56
|
type: Array,
|
|
48
57
|
required: true
|
|
49
58
|
},
|
|
50
|
-
/**
|
|
51
|
-
* The table header title.
|
|
52
|
-
*/
|
|
53
59
|
tableHeaderName: {
|
|
54
60
|
type: String,
|
|
55
61
|
"default": 'Name'
|
|
56
62
|
},
|
|
57
|
-
/**
|
|
58
|
-
* The placeholder text for the search input.
|
|
59
|
-
*/
|
|
60
63
|
searchPlaceholder: {
|
|
61
64
|
type: String,
|
|
62
65
|
"default": 'Search'
|
|
63
66
|
},
|
|
64
|
-
/**
|
|
65
|
-
* The label text for the search input.
|
|
66
|
-
*/
|
|
67
67
|
searchLabel: {
|
|
68
68
|
type: String,
|
|
69
69
|
"default": 'Search by provider name'
|
|
70
70
|
},
|
|
71
|
-
/**
|
|
72
|
-
* The label text for the status filter dropdown.
|
|
73
|
-
*/
|
|
74
71
|
statusFilterLabel: {
|
|
75
72
|
type: String,
|
|
76
73
|
"default": 'Filter by status'
|
|
77
74
|
}
|
|
78
75
|
},
|
|
79
76
|
setup: function setup(props, ctx) {
|
|
80
|
-
|
|
77
|
+
// Debounced search
|
|
78
|
+
var _useDebouncedRef = useDebouncedRef('', 150),
|
|
79
|
+
searchFilterModel = _useDebouncedRef.state,
|
|
80
|
+
debouncedSearch = _useDebouncedRef.debounced;
|
|
81
81
|
var statusFilterModel = ref('all');
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
82
|
+
// Parse once per items change (avoid parsing on every reactive tick)
|
|
83
|
+
var parsedItems = shallowRef([]);
|
|
84
|
+
watch(function () {
|
|
86
85
|
return props.items;
|
|
86
|
+
}, function (items) {
|
|
87
|
+
parsedItems.value = typeof items === 'string' ? JSON.parse(items) : items;
|
|
88
|
+
}, {
|
|
89
|
+
immediate: true
|
|
87
90
|
});
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return item.name.toString().toLowerCase().includes(searchFilterModel.value.toLowerCase());
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
if (statusFilterModel.value && statusFilterModel.value !== 'all') {
|
|
96
|
-
tempFilteredItems = tempFilteredItems.filter(function (item) {
|
|
97
|
-
return item.status === statusFilterModel.value;
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
return tempFilteredItems;
|
|
101
|
-
});
|
|
102
|
-
var options = _defineProperty(_defineProperty({}, 'status', {
|
|
103
|
-
disabled: true
|
|
104
|
-
}), props.tableHeaderName, {
|
|
105
|
-
isSortable: true,
|
|
106
|
-
initSortOrder: 'asc'
|
|
91
|
+
// Stable collator for fast locale-aware compare
|
|
92
|
+
var collator = new Intl.Collator(undefined, {
|
|
93
|
+
sensitivity: 'base',
|
|
94
|
+
numeric: true
|
|
107
95
|
});
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
96
|
+
// One pipeline: filter -> sort -> map to table format
|
|
97
|
+
var displayedTableItems = computed(function () {
|
|
98
|
+
var q = debouncedSearch.value.trim().toLowerCase();
|
|
99
|
+
var status = statusFilterModel.value;
|
|
100
|
+
// filter in a single pass
|
|
101
|
+
var filtered = [];
|
|
102
|
+
var _iterator = _createForOfIteratorHelper(parsedItems.value),
|
|
103
|
+
_step;
|
|
104
|
+
try {
|
|
105
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
106
|
+
var item = _step.value;
|
|
107
|
+
if (q && !item.name.toLowerCase().includes(q)) continue;
|
|
108
|
+
if (status !== 'all' && item.status !== status) continue;
|
|
109
|
+
filtered.push(item);
|
|
110
|
+
}
|
|
111
|
+
// sort BEFORE mapping; stable and correct
|
|
112
|
+
} catch (err) {
|
|
113
|
+
_iterator.e(err);
|
|
114
|
+
} finally {
|
|
115
|
+
_iterator.f();
|
|
116
|
+
}
|
|
117
|
+
filtered.sort(function (a, b) {
|
|
118
|
+
if (a.status === 'outage' && b.status !== 'outage') return -1;
|
|
119
|
+
if (b.status === 'outage' && a.status !== 'outage') return 1;
|
|
120
|
+
return collator.compare(a.name, b.name);
|
|
112
121
|
});
|
|
122
|
+
// map once to the shape FwTable expects
|
|
123
|
+
return filtered.map(function (item) {
|
|
124
|
+
return _defineProperty(_defineProperty({
|
|
125
|
+
status: item.status
|
|
126
|
+
}, props.tableHeaderName, "\n <div class=\"flex flex-row-reverse justify-end items-center\">\n <p class=\"mb-0 font-medium\">".concat(item.name, "</p>\n <img class=\"mr-2 w-[48px]\" alt=\"").concat(item.name, " logo\" src=\"").concat(item.image_url, "\" loading=\"lazy\" decoding=\"async\" />\n </div>\n ")), "id", item.name);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
// Emit changes as a watcher (no side effects in computed)
|
|
130
|
+
watch(displayedTableItems, function (items) {
|
|
131
|
+
return ctx.emit('changed', items.length);
|
|
132
|
+
}, {
|
|
133
|
+
immediate: true
|
|
113
134
|
});
|
|
114
|
-
var
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
if (item1.status === 'outage') {
|
|
119
|
-
return -1;
|
|
135
|
+
var options = computed(function () {
|
|
136
|
+
return _defineProperty(_defineProperty({
|
|
137
|
+
status: {
|
|
138
|
+
disabled: true
|
|
120
139
|
}
|
|
121
|
-
|
|
140
|
+
}, props.tableHeaderName, {
|
|
141
|
+
isSortable: true,
|
|
142
|
+
initSortOrder: 'asc',
|
|
143
|
+
html: true
|
|
144
|
+
}), "id", {
|
|
145
|
+
disabled: true
|
|
122
146
|
});
|
|
123
|
-
ctx.emit('changed', sortedItems.length);
|
|
124
|
-
return sortedItems;
|
|
125
147
|
});
|
|
126
148
|
var _useColours = useColours(),
|
|
127
149
|
primaryFade5 = _useColours.primaryFade5,
|
|
@@ -129,7 +151,8 @@ var __default__ = defineComponent({
|
|
|
129
151
|
primaryFade40 = _useColours.primaryFade40;
|
|
130
152
|
return {
|
|
131
153
|
options: options,
|
|
132
|
-
sortedTableItems:
|
|
154
|
+
sortedTableItems: displayedTableItems,
|
|
155
|
+
// keep template the same
|
|
133
156
|
searchFilterModel: searchFilterModel,
|
|
134
157
|
statusFilterModel: statusFilterModel,
|
|
135
158
|
primaryFade5: primaryFade5,
|
|
@@ -141,9 +164,9 @@ var __default__ = defineComponent({
|
|
|
141
164
|
var __injectCSSVars__ = function __injectCSSVars__() {
|
|
142
165
|
useCssVars(function (_ctx) {
|
|
143
166
|
return {
|
|
144
|
-
"
|
|
145
|
-
"
|
|
146
|
-
"
|
|
167
|
+
"f93b6e8a": _ctx.primaryFade5,
|
|
168
|
+
"v2e326310": _ctx.primaryFade20,
|
|
169
|
+
"v2e326294": _ctx.primaryFade40
|
|
147
170
|
};
|
|
148
171
|
});
|
|
149
172
|
};
|
|
@@ -172,10 +195,6 @@ var _hoisted_5 = {
|
|
|
172
195
|
var _hoisted_6 = {
|
|
173
196
|
key: 1
|
|
174
197
|
};
|
|
175
|
-
var _hoisted_7 = /*#__PURE__*/createElementVNode("h4", {
|
|
176
|
-
"class": "w-full font-medium text-center my-6"
|
|
177
|
-
}, "Sorry, we could not find any results.", -1);
|
|
178
|
-
var _hoisted_8 = [_hoisted_7];
|
|
179
198
|
function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
180
199
|
var _component_SearchSvg = resolveComponent("SearchSvg");
|
|
181
200
|
var _component_SolidXMarkSvg = resolveComponent("SolidXMarkSvg");
|
|
@@ -249,14 +268,15 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
249
268
|
}, null, 8, ["modelValue", "label"])])]), _ctx.sortedTableItems && _ctx.sortedTableItems.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_5, [createVNode(_component_FwTable, {
|
|
250
269
|
"class": "w-full",
|
|
251
270
|
items: _ctx.sortedTableItems,
|
|
252
|
-
options: _ctx.options
|
|
271
|
+
options: _ctx.options,
|
|
272
|
+
"row-key": "id"
|
|
253
273
|
}, {
|
|
254
274
|
preHead: withCtx(function () {
|
|
255
275
|
return [createVNode(_component_FwTableHead, {
|
|
256
276
|
"class": "w-[150px] md:w-[200px]"
|
|
257
277
|
}, {
|
|
258
278
|
"default": withCtx(function () {
|
|
259
|
-
return [createTextVNode(" Status ")];
|
|
279
|
+
return _toConsumableArray(_cache[3] || (_cache[3] = [createTextVNode(" Status ", -1)]));
|
|
260
280
|
}),
|
|
261
281
|
_: 1
|
|
262
282
|
})];
|
|
@@ -276,7 +296,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
276
296
|
return [createVNode(_component_SolidXMarkSvg, {
|
|
277
297
|
name: "solid-xmark",
|
|
278
298
|
"class": "w-4 h-4 mr-1"
|
|
279
|
-
}), createTextVNode("Outage ")];
|
|
299
|
+
}), _cache[4] || (_cache[4] = createTextVNode("Outage ", -1))];
|
|
280
300
|
}),
|
|
281
301
|
_: 1
|
|
282
302
|
})) : (openBlock(), createBlock(_component_FwTag, {
|
|
@@ -288,7 +308,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
288
308
|
return [createVNode(_component_SolidCheckSvg, {
|
|
289
309
|
name: "solid-check",
|
|
290
310
|
"class": "w-4 h-4 mr-1"
|
|
291
|
-
}), createTextVNode(" Available ")];
|
|
311
|
+
}), _cache[5] || (_cache[5] = createTextVNode(" Available ", -1))];
|
|
292
312
|
}),
|
|
293
313
|
_: 1
|
|
294
314
|
}))];
|
|
@@ -297,11 +317,13 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
297
317
|
}, 1024)];
|
|
298
318
|
}),
|
|
299
319
|
_: 1
|
|
300
|
-
}, 8, ["items", "options"])])) : (openBlock(), createElementBlock("div", _hoisted_6,
|
|
320
|
+
}, 8, ["items", "options"])])) : (openBlock(), createElementBlock("div", _hoisted_6, _toConsumableArray(_cache[6] || (_cache[6] = [createElementVNode("h4", {
|
|
321
|
+
"class": "w-full font-medium text-center my-6"
|
|
322
|
+
}, "Sorry, we could not find any results.", -1)]))))]);
|
|
301
323
|
}
|
|
302
324
|
|
|
303
|
-
var css_248z = ".fw-provider-list--table{background-color:var(--
|
|
304
|
-
var stylesheet = ".fw-provider-list--table{background-color:var(--
|
|
325
|
+
var css_248z = ".fw-provider-list--table{background-color:var(--f93b6e8a);overflow-x:auto}.fw-provider-list--table::-webkit-scrollbar{-webkit-appearance:none;height:8px}.fw-provider-list--table::-webkit-scrollbar-track{background-color:var(--v2e326310);border-radius:12px}.fw-provider-list--table::-webkit-scrollbar-thumb{background-color:var(--v2e326294);border-radius:12px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.fw-provider-list--table::-webkit-scrollbar-thumb:hover{background-color:var(--colorBody);cursor:pointer}";
|
|
326
|
+
var stylesheet = ".fw-provider-list--table{background-color:var(--f93b6e8a);overflow-x:auto}.fw-provider-list--table::-webkit-scrollbar{-webkit-appearance:none;height:8px}.fw-provider-list--table::-webkit-scrollbar-track{background-color:var(--v2e326310);border-radius:12px}.fw-provider-list--table::-webkit-scrollbar-thumb{background-color:var(--v2e326294);border-radius:12px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.fw-provider-list--table::-webkit-scrollbar-thumb:hover{background-color:var(--colorBody);cursor:pointer}";
|
|
305
327
|
styleInject(css_248z);
|
|
306
328
|
|
|
307
329
|
__default__.render = render;
|
package/esm/fw-sidebar-menu.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { defineComponent, computed, resolveComponent,
|
|
2
|
-
import { s as script$1 } from './fw-button-
|
|
3
|
-
import { o as render$1 } from './index-
|
|
1
|
+
import { defineComponent, computed, resolveComponent, withDirectives, openBlock, createElementBlock, normalizeClass, createVNode, createElementVNode, withCtx, createCommentVNode, renderSlot, Fragment, renderList, createBlock, createTextVNode, toDisplayString, vShow } from 'vue';
|
|
2
|
+
import { s as script$1 } from './fw-button-DZTHZLjk.js';
|
|
3
|
+
import { o as render$1 } from './index-DHyRsKsZ.js';
|
|
4
4
|
import { s as styleInject } from './style-inject.es-tgCJW-Cu.js';
|
|
5
5
|
|
|
6
6
|
var script = defineComponent({
|
|
@@ -58,7 +58,7 @@ var script = defineComponent({
|
|
|
58
58
|
}
|
|
59
59
|
},
|
|
60
60
|
setup: function setup(props, ctx) {
|
|
61
|
-
var baseClass =
|
|
61
|
+
var baseClass = 'h-full shadow-md border-r border-grey-20 fixed top-0 left-0 ' + 'transition-[width] duration-300 ease-out';
|
|
62
62
|
var isMenuOpen = computed({
|
|
63
63
|
get: function get() {
|
|
64
64
|
return props.modelValue;
|
|
@@ -67,84 +67,91 @@ var script = defineComponent({
|
|
|
67
67
|
return ctx.emit('update:modelValue', state);
|
|
68
68
|
}
|
|
69
69
|
});
|
|
70
|
+
var hasItems = computed(function () {
|
|
71
|
+
return Array.isArray(props.menuItems) && props.menuItems.length > 0;
|
|
72
|
+
});
|
|
73
|
+
var enabledItems = computed(function () {
|
|
74
|
+
var _props$menuItems;
|
|
75
|
+
return ((_props$menuItems = props.menuItems) !== null && _props$menuItems !== void 0 ? _props$menuItems : []).filter(function (i) {
|
|
76
|
+
return !i.disabled;
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
var widthClass = computed(function () {
|
|
80
|
+
return isMenuOpen.value ? props.openWidth : props.closedWidth;
|
|
81
|
+
});
|
|
70
82
|
var toggleMenu = function toggleMenu() {
|
|
71
|
-
|
|
72
|
-
|
|
83
|
+
var next = !isMenuOpen.value;
|
|
84
|
+
isMenuOpen.value = next;
|
|
85
|
+
ctx.emit('toggled', next ? props.openWidth : props.closedWidth);
|
|
73
86
|
};
|
|
74
87
|
return {
|
|
75
88
|
baseClass: baseClass,
|
|
76
89
|
isMenuOpen: isMenuOpen,
|
|
77
|
-
toggleMenu: toggleMenu
|
|
90
|
+
toggleMenu: toggleMenu,
|
|
91
|
+
enabledItems: enabledItems,
|
|
92
|
+
hasItems: hasItems,
|
|
93
|
+
widthClass: widthClass
|
|
78
94
|
};
|
|
79
95
|
}
|
|
80
96
|
});
|
|
81
97
|
|
|
82
98
|
var _hoisted_1 = {
|
|
83
|
-
"class": "flex flex-col px-4 py-8"
|
|
84
|
-
};
|
|
85
|
-
var _hoisted_2 = {
|
|
86
99
|
key: 0,
|
|
87
100
|
"class": "text-left px-4 pb-6"
|
|
88
101
|
};
|
|
89
|
-
var
|
|
102
|
+
var _hoisted_2 = {
|
|
90
103
|
"class": "flex flex-col space-y-1"
|
|
91
104
|
};
|
|
92
105
|
function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
93
|
-
var _ctx$menuItems;
|
|
94
106
|
var _component_ChevronRightSvg = resolveComponent("ChevronRightSvg");
|
|
95
107
|
var _component_FwButton = resolveComponent("FwButton");
|
|
96
|
-
return
|
|
97
|
-
|
|
98
|
-
"class": normalizeClass(["fw-sidebar-menu", [_ctx.baseClass, _ctx.isMenuOpen ? _ctx.openWidth : _ctx.closedWidth]]),
|
|
108
|
+
return withDirectives((openBlock(), createElementBlock("aside", {
|
|
109
|
+
"class": normalizeClass(["fw-sidebar-menu", [_ctx.baseClass, _ctx.widthClass]]),
|
|
99
110
|
"aria-label": "Aside navigation menu"
|
|
100
111
|
}, [createVNode(_component_FwButton, {
|
|
101
112
|
variant: _ctx.toggleButtonVariant,
|
|
102
|
-
tabindex: "",
|
|
113
|
+
tabindex: "0",
|
|
103
114
|
title: _ctx.isMenuOpen ? 'Close sidebar navigation menu' : 'Open sidebar navigation menu',
|
|
104
|
-
onClick:
|
|
105
|
-
|
|
106
|
-
}),
|
|
107
|
-
"class": normalizeClass(["inline-block w-9 h-9 !p-0 shadow absolute top-4 -right-4 rounded-full", _ctx.toggleButtonClass])
|
|
115
|
+
onClick: _ctx.toggleMenu,
|
|
116
|
+
"class": normalizeClass(["inline-block w-9 h-9 !p-0 shadow !absolute top-4 -right-4 rounded-full z-[2]", _ctx.toggleButtonClass])
|
|
108
117
|
}, {
|
|
109
118
|
"default": withCtx(function () {
|
|
110
119
|
return [createVNode(_component_ChevronRightSvg, {
|
|
111
120
|
name: "chevron-right",
|
|
112
|
-
"class": normalizeClass(["size-6 inline-block m-0
|
|
121
|
+
"class": normalizeClass(["size-6 inline-block m-0 fw-sidebar-menu-toggle", {
|
|
122
|
+
'fw-sidebar-menu-toggle--open': _ctx.isMenuOpen
|
|
123
|
+
}])
|
|
113
124
|
}, null, 8, ["class"])];
|
|
114
125
|
}),
|
|
115
126
|
_: 1
|
|
116
|
-
}, 8, ["variant", "title", "class"]),
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}), 128))])], 512), [[vShow, _ctx.isMenuOpen]])];
|
|
141
|
-
}),
|
|
142
|
-
_: 3
|
|
143
|
-
})], 2)) : createCommentVNode("", true);
|
|
127
|
+
}, 8, ["variant", "title", "onClick", "class"]), createElementVNode("div", {
|
|
128
|
+
"class": normalizeClass(["fw-sidebar-menu-contents", {
|
|
129
|
+
'fw-sidebar-menu-contents--closed': !_ctx.isMenuOpen
|
|
130
|
+
}])
|
|
131
|
+
}, [_ctx.$slots.title ? (openBlock(), createElementBlock("div", _hoisted_1, [renderSlot(_ctx.$slots, "title")])) : createCommentVNode("", true), createElementVNode("div", _hoisted_2, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.enabledItems, function (item, i) {
|
|
132
|
+
var _ref, _ref2;
|
|
133
|
+
return openBlock(), createBlock(_component_FwButton, {
|
|
134
|
+
key: (_ref = (_ref2 = i !== null && i !== void 0 ? i : item.href) !== null && _ref2 !== void 0 ? _ref2 : item.to) !== null && _ref !== void 0 ? _ref : item.label,
|
|
135
|
+
rounded: false,
|
|
136
|
+
"class": "!text-left !px-4 bg-transparent border-none !no-underline hover:!bg-brand-bg4 focus:bg-brand-bg4",
|
|
137
|
+
variant: "quaternary",
|
|
138
|
+
href: item.href,
|
|
139
|
+
to: item.to,
|
|
140
|
+
external: item.external,
|
|
141
|
+
size: "lg",
|
|
142
|
+
"aria-current": "page",
|
|
143
|
+
onClick: item.onClick
|
|
144
|
+
}, {
|
|
145
|
+
"default": withCtx(function () {
|
|
146
|
+
return [createTextVNode(toDisplayString(item.label), 1)];
|
|
147
|
+
}),
|
|
148
|
+
_: 2
|
|
149
|
+
}, 1032, ["href", "to", "external", "onClick"]);
|
|
150
|
+
}), 128))])], 2)], 2)), [[vShow, _ctx.hasItems]]);
|
|
144
151
|
}
|
|
145
152
|
|
|
146
|
-
var css_248z = ".sidebarMenuSlide-enter-active{-webkit-transition:
|
|
147
|
-
var stylesheet = ".sidebarMenuSlide-enter-active{-webkit-transition:
|
|
153
|
+
var css_248z = ".sidebarMenuSlide-enter-active,.sidebarMenuSlide-leave-active{-webkit-transition:opacity .18s ease,-webkit-transform .22s ease;transition:opacity .18s ease,-webkit-transform .22s ease;-moz-transition:transform .22s ease,opacity .18s ease,-moz-transform .22s ease;transition:transform .22s ease,opacity .18s ease;transition:transform .22s ease,opacity .18s ease,-webkit-transform .22s ease,-moz-transform .22s ease;will-change:transform,opacity}.sidebarMenuSlide-enter-from,.sidebarMenuSlide-leave-to{opacity:0;-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);-ms-transform:translateX(-8px);transform:translateX(-8px)}.fw-sidebar-menu-contents,.sidebarMenuSlide-enter-to,.sidebarMenuSlide-leave-from{opacity:1;-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.fw-sidebar-menu-contents{-webkit-box-orient:vertical;-webkit-box-direction:normal;-moz-box-orient:vertical;-moz-box-direction:normal;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:hidden;padding:2rem 1rem;-webkit-transition:opacity .16s ease,-webkit-transform .2s ease;transition:opacity .16s ease,-webkit-transform .2s ease;-moz-transition:opacity .16s ease,transform .2s ease,-moz-transform .2s ease;transition:opacity .16s ease,transform .2s ease;transition:opacity .16s ease,transform .2s ease,-webkit-transform .2s ease,-moz-transform .2s ease;-webkit-transition-delay:.16s;-moz-transition-delay:.16s;transition-delay:.16s;white-space:nowrap;will-change:opacity,transform}.fw-sidebar-menu-contents--closed{opacity:0;pointer-events:none;-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);-ms-transform:translateX(-8px);transform:translateX(-8px);-webkit-transition-delay:0ms;-moz-transition-delay:0ms;transition-delay:0ms;visibility:hidden}.fw-sidebar-menu-toggle{-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;-moz-transition:transform .2s ease,-moz-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease,-moz-transform .2s ease;will-change:transform}.fw-sidebar-menu-toggle--open{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}@media (prefers-reduced-motion:reduce){.fw-sidebar-menu-toggle,.sidebarMenuSlide-enter-active,.sidebarMenuSlide-leave-active{-webkit-transition:none!important;-moz-transition:none!important;transition:none!important}}.fw-sidebar-menu .fw-button--quaternary.router-link-active{background-color:var(--colorBg4)}";
|
|
154
|
+
var stylesheet = ".sidebarMenuSlide-enter-active,.sidebarMenuSlide-leave-active{-webkit-transition:opacity .18s ease,-webkit-transform .22s ease;transition:opacity .18s ease,-webkit-transform .22s ease;-moz-transition:transform .22s ease,opacity .18s ease,-moz-transform .22s ease;transition:transform .22s ease,opacity .18s ease;transition:transform .22s ease,opacity .18s ease,-webkit-transform .22s ease,-moz-transform .22s ease;will-change:transform,opacity}.sidebarMenuSlide-enter-from,.sidebarMenuSlide-leave-to{opacity:0;-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);-ms-transform:translateX(-8px);transform:translateX(-8px)}.fw-sidebar-menu-contents,.sidebarMenuSlide-enter-to,.sidebarMenuSlide-leave-from{opacity:1;-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.fw-sidebar-menu-contents{-webkit-box-orient:vertical;-webkit-box-direction:normal;-moz-box-orient:vertical;-moz-box-direction:normal;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:hidden;padding:2rem 1rem;-webkit-transition:opacity .16s ease,-webkit-transform .2s ease;transition:opacity .16s ease,-webkit-transform .2s ease;-moz-transition:opacity .16s ease,transform .2s ease,-moz-transform .2s ease;transition:opacity .16s ease,transform .2s ease;transition:opacity .16s ease,transform .2s ease,-webkit-transform .2s ease,-moz-transform .2s ease;-webkit-transition-delay:.16s;-moz-transition-delay:.16s;transition-delay:.16s;white-space:nowrap;will-change:opacity,transform}.fw-sidebar-menu-contents--closed{opacity:0;pointer-events:none;-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);-ms-transform:translateX(-8px);transform:translateX(-8px);-webkit-transition-delay:0ms;-moz-transition-delay:0ms;transition-delay:0ms;visibility:hidden}.fw-sidebar-menu-toggle{-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;-moz-transition:transform .2s ease,-moz-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease,-moz-transform .2s ease;will-change:transform}.fw-sidebar-menu-toggle--open{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}@media (prefers-reduced-motion:reduce){.fw-sidebar-menu-toggle,.sidebarMenuSlide-enter-active,.sidebarMenuSlide-leave-active{-webkit-transition:none!important;-moz-transition:none!important;transition:none!important}}.fw-sidebar-menu .fw-button--quaternary.router-link-active{background-color:var(--colorBg4)}";
|
|
148
155
|
styleInject(css_248z);
|
|
149
156
|
|
|
150
157
|
script.render = render;
|