@leaflink/stash 52.0.2 → 53.0.0
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 +50 -49
- package/dist/Accordion.js +16 -16
- package/dist/Accordion.js.map +1 -1
- package/dist/AccordionGroup.js +7 -7
- package/dist/AccordionGroup.js.map +1 -1
- package/dist/ActionsDropdown.js +16 -16
- package/dist/ActionsDropdown.js.map +1 -1
- package/dist/AddressSelect.js.map +1 -1
- package/dist/AddressSelect.vue.d.ts +1 -1
- package/dist/Alert.js +34 -34
- package/dist/Alert.js.map +1 -1
- package/dist/AppNavigationItem.js +31 -31
- package/dist/AppNavigationItem.js.map +1 -1
- package/dist/AppSidebar.js +19 -19
- package/dist/AppSidebar.js.map +1 -1
- package/dist/AppTopbar.js +32 -32
- package/dist/AppTopbar.js.map +1 -1
- package/dist/Avatar.js +18 -18
- package/dist/Avatar.js.map +1 -1
- package/dist/Backdrop.js +5 -5
- package/dist/Backdrop.js.map +1 -1
- package/dist/Badge.js +38 -38
- package/dist/Badge.js.map +1 -1
- package/dist/Box.js +1 -1
- package/dist/{Box.vue_vue_type_script_setup_true_lang-rFnvwLVY.js → Box.vue_vue_type_script_setup_true_lang-dFFZN40_.js} +6 -6
- package/dist/{Box.vue_vue_type_script_setup_true_lang-rFnvwLVY.js.map → Box.vue_vue_type_script_setup_true_lang-dFFZN40_.js.map} +1 -1
- package/dist/Button.js +21 -21
- package/dist/Button.js.map +1 -1
- package/dist/ButtonGroup.js +26 -26
- package/dist/ButtonGroup.js.map +1 -1
- package/dist/Card.js +14 -14
- package/dist/Card.js.map +1 -1
- package/dist/CardContent.js +1 -1
- package/dist/CardContent.js.map +1 -1
- package/dist/CardFooter.js +1 -1
- package/dist/CardFooter.js.map +1 -1
- package/dist/CardHeader.js +4 -4
- package/dist/CardHeader.js.map +1 -1
- package/dist/CardMedia.js +20 -20
- package/dist/CardMedia.js.map +1 -1
- package/dist/Carousel.js +88 -93
- package/dist/Carousel.js.map +1 -1
- package/dist/Checkbox.js +30 -30
- package/dist/Checkbox.js.map +1 -1
- package/dist/Checkbox.vue.d.ts +0 -3
- package/dist/Chip.js +33 -33
- package/dist/Chip.js.map +1 -1
- package/dist/ConfirmationCodeInput.js +72 -72
- package/dist/ConfirmationCodeInput.js.map +1 -1
- package/dist/ContextSwitcher.js +27 -27
- package/dist/ContextSwitcher.js.map +1 -1
- package/dist/Copy.js +47 -48
- package/dist/Copy.js.map +1 -1
- package/dist/CurrencyInput.js +1 -1
- package/dist/CurrencyInput.js.map +1 -1
- package/dist/CurrencyInput.vue.d.ts +5 -5
- package/dist/DataView.js +23 -23
- package/dist/DataView.js.map +1 -1
- package/dist/DataViewFilters.js +26 -26
- package/dist/DataViewFilters.js.map +1 -1
- package/dist/DataViewSortButton.js +22 -22
- package/dist/DataViewSortButton.js.map +1 -1
- package/dist/DataViewToolbar.js +52 -52
- package/dist/DataViewToolbar.js.map +1 -1
- package/dist/DatePicker.js +10 -10
- package/dist/DatePicker.js.map +1 -1
- package/dist/DescriptionList.js +2 -2
- package/dist/DescriptionList.js.map +1 -1
- package/dist/DescriptionListDetail.js +2 -2
- package/dist/DescriptionListDetail.js.map +1 -1
- package/dist/DescriptionListGroup.js +9 -9
- package/dist/DescriptionListGroup.js.map +1 -1
- package/dist/DescriptionListTerm.js +8 -8
- package/dist/DescriptionListTerm.js.map +1 -1
- package/dist/Dialog.js +47 -47
- package/dist/Dialog.js.map +1 -1
- package/dist/Divider.js +6 -6
- package/dist/Divider.js.map +1 -1
- package/dist/Dropdown.js +20 -20
- package/dist/Dropdown.js.map +1 -1
- package/dist/EmptyState.js +26 -26
- package/dist/EmptyState.js.map +1 -1
- package/dist/Field.js +1 -1
- package/dist/{Field.vue_vue_type_script_setup_true_lang-DI6z3AE9.js → Field.vue_vue_type_script_setup_true_lang-dAGKfjf5.js} +17 -17
- package/dist/Field.vue_vue_type_script_setup_true_lang-dAGKfjf5.js.map +1 -0
- package/dist/FileUpload.js +47 -49
- package/dist/FileUpload.js.map +1 -1
- package/dist/FilterChip.js +20 -20
- package/dist/FilterChip.js.map +1 -1
- package/dist/FilterDrawerItem.js +13 -13
- package/dist/FilterDrawerItem.js.map +1 -1
- package/dist/FilterDropdown.js +27 -27
- package/dist/FilterDropdown.js.map +1 -1
- package/dist/FilterSelect.js +33 -33
- package/dist/FilterSelect.js.map +1 -1
- package/dist/Filters.js +29 -29
- package/dist/Filters.js.map +1 -1
- package/dist/Filters.vue.d.ts +2 -8
- package/dist/HttpError.js +29 -29
- package/dist/HttpError.js.map +1 -1
- package/dist/HttpError.vue.d.ts +0 -3
- package/dist/Icon.js +12 -12
- package/dist/Icon.js.map +1 -1
- package/dist/IconLabel.js +19 -19
- package/dist/IconLabel.js.map +1 -1
- package/dist/IconLabel.vue.d.ts +1 -1
- package/dist/Illustration.js +2 -2
- package/dist/{Illustration.vue_vue_type_script_setup_true_lang-BrqEF8xe.js → Illustration.vue_vue_type_script_setup_true_lang-C1bPkWZZ.js} +4 -4
- package/dist/{Illustration.vue_vue_type_script_setup_true_lang-BrqEF8xe.js.map → Illustration.vue_vue_type_script_setup_true_lang-C1bPkWZZ.js.map} +1 -1
- package/dist/Image.js +2 -2
- package/dist/Image.vue.d.ts +0 -3
- package/dist/{Image.vue_vue_type_script_setup_true_lang-D5u4av0_.js → Image.vue_vue_type_script_setup_true_lang-CAj0FH9h.js} +11 -11
- package/dist/Image.vue_vue_type_script_setup_true_lang-CAj0FH9h.js.map +1 -0
- package/dist/InlineEdit.js +8 -8
- package/dist/InlineEdit.js.map +1 -1
- package/dist/Input.js +29 -29
- package/dist/Input.js.map +1 -1
- package/dist/InputOptions.js +87 -84
- package/dist/InputOptions.js.map +1 -1
- package/dist/InputOptions.vue.d.ts +2 -2
- package/dist/IntegrationIcon.js +11 -11
- package/dist/IntegrationIcon.js.map +1 -1
- package/dist/Label.js +1 -1
- package/dist/{Label.vue_vue_type_script_setup_true_lang-CNquF3AP.js → Label.vue_vue_type_script_setup_true_lang-xwY3X-iV.js} +16 -16
- package/dist/{Label.vue_vue_type_script_setup_true_lang-CNquF3AP.js.map → Label.vue_vue_type_script_setup_true_lang-xwY3X-iV.js.map} +1 -1
- package/dist/ListItem.js +14 -14
- package/dist/ListItem.js.map +1 -1
- package/dist/ListItem.vue.d.ts +0 -6
- package/dist/ListItemCell.js +9 -9
- package/dist/ListItemCell.js.map +1 -1
- package/dist/ListView.js +138 -141
- package/dist/ListView.js.map +1 -1
- package/dist/ListView.vue.d.ts +2 -26
- package/dist/Loading.js +8 -8
- package/dist/Loading.js.map +1 -1
- package/dist/Logo.js +1 -1
- package/dist/{Logo.vue_vue_type_script_setup_true_lang-Dz8c98sc.js → Logo.vue_vue_type_script_setup_true_lang-DghNC_k6.js} +3 -3
- package/dist/{Logo.vue_vue_type_script_setup_true_lang-Dz8c98sc.js.map → Logo.vue_vue_type_script_setup_true_lang-DghNC_k6.js.map} +1 -1
- package/dist/Menu.js +5 -5
- package/dist/Menu.js.map +1 -1
- package/dist/MenuItem.js +12 -12
- package/dist/MenuItem.js.map +1 -1
- package/dist/Metric.js +24 -24
- package/dist/Metric.js.map +1 -1
- package/dist/Modal.js +60 -60
- package/dist/Modal.js.map +1 -1
- package/dist/Modals.js +1 -1
- package/dist/Modals.js.map +1 -1
- package/dist/Module.js +6 -6
- package/dist/Module.js.map +1 -1
- package/dist/ModuleContent.js +16 -16
- package/dist/ModuleContent.js.map +1 -1
- package/dist/ModuleFooter.js +13 -13
- package/dist/ModuleFooter.js.map +1 -1
- package/dist/ModuleHeader.js +29 -29
- package/dist/ModuleHeader.js.map +1 -1
- package/dist/MoreActions.js +81 -84
- package/dist/MoreActions.js.map +1 -1
- package/dist/ObfuscateText.js +4 -4
- package/dist/ObfuscateText.js.map +1 -1
- package/dist/PageContent.js +13 -13
- package/dist/PageContent.js.map +1 -1
- package/dist/PageHeader.js +28 -28
- package/dist/PageHeader.js.map +1 -1
- package/dist/PageNavigation.js +1 -1
- package/dist/Paginate.js +45 -45
- package/dist/Paginate.js.map +1 -1
- package/dist/QuickAction.js +18 -18
- package/dist/QuickAction.js.map +1 -1
- package/dist/Radio.js +17 -17
- package/dist/Radio.js.map +1 -1
- package/dist/RadioGroup.js +158 -154
- package/dist/RadioGroup.js.map +1 -1
- package/dist/RadioNew.js +80 -80
- package/dist/RadioNew.js.map +1 -1
- package/dist/RadioNew.vue.d.ts +0 -3
- package/dist/RangeInput.js +2 -2
- package/dist/RangeInput.js.map +1 -1
- package/dist/SearchBar.js +9 -9
- package/dist/SearchBar.js.map +1 -1
- package/dist/SectionHeader.js +14 -14
- package/dist/SectionHeader.js.map +1 -1
- package/dist/Select.js +369 -366
- package/dist/Select.js.map +1 -1
- package/dist/SelectStatus.js +26 -27
- package/dist/SelectStatus.js.map +1 -1
- package/dist/Skeleton.js +20 -20
- package/dist/Skeleton.js.map +1 -1
- package/dist/Step.js +37 -40
- package/dist/Step.js.map +1 -1
- package/dist/Stepper.js +17 -17
- package/dist/Stepper.js.map +1 -1
- package/dist/Switch.js +57 -57
- package/dist/Switch.js.map +1 -1
- package/dist/Tab.js +17 -19
- package/dist/Tab.js.map +1 -1
- package/dist/TabPanel.js +1 -1
- package/dist/TabPanel.js.map +1 -1
- package/dist/Table.js +22 -22
- package/dist/Table.js.map +1 -1
- package/dist/TableCell.js +32 -32
- package/dist/TableCell.js.map +1 -1
- package/dist/TableHeaderCell.js +35 -35
- package/dist/TableHeaderCell.js.map +1 -1
- package/dist/TableHeaderRow.js +10 -10
- package/dist/TableHeaderRow.js.map +1 -1
- package/dist/TableRow.js +51 -51
- package/dist/TableRow.js.map +1 -1
- package/dist/Tabs.js +2 -2
- package/dist/{Tabs.vue_vue_type_script_setup_true_lang-B3Irnlcd.js → Tabs.vue_vue_type_script_setup_true_lang-BVTCcK6M.js} +33 -33
- package/dist/Tabs.vue_vue_type_script_setup_true_lang-BVTCcK6M.js.map +1 -0
- package/dist/TextEditor.js +8 -8
- package/dist/TextEditor.js.map +1 -1
- package/dist/Textarea.js +15 -15
- package/dist/Textarea.js.map +1 -1
- package/dist/Thumbnail.js +41 -41
- package/dist/Thumbnail.js.map +1 -1
- package/dist/ThumbnailEmpty.js +3 -3
- package/dist/ThumbnailEmpty.js.map +1 -1
- package/dist/ThumbnailGroup.js +22 -22
- package/dist/ThumbnailGroup.js.map +1 -1
- package/dist/Timeline.js +3 -3
- package/dist/Timeline.js.map +1 -1
- package/dist/TimelineItem.js +22 -22
- package/dist/TimelineItem.js.map +1 -1
- package/dist/Toast.js +29 -29
- package/dist/Toast.js.map +1 -1
- package/dist/Toast.vue.d.ts +3 -0
- package/dist/Toasts.js +11 -11
- package/dist/Toasts.js.map +1 -1
- package/dist/Tooltip.js +2 -81
- package/dist/Tooltip.js.map +1 -1
- package/dist/Tooltip.vue.d.ts +1 -1
- package/dist/Tooltip.vue_vue_type_script_setup_true_lang-mzBLSXy3.js +84 -0
- package/dist/Tooltip.vue_vue_type_script_setup_true_lang-mzBLSXy3.js.map +1 -0
- package/dist/components.css +2 -2
- package/dist/constants.d.ts +9 -9
- package/dist/constants.js +17 -17
- package/dist/constants.js.map +1 -1
- package/dist/directives/tooltip.js +2 -2
- package/dist/directives/tooltip.js.map +1 -1
- package/dist/{index-C14LhAwV.js → index-DBV9Uz0C.js} +3 -3
- package/dist/{index-C14LhAwV.js.map → index-DBV9Uz0C.js.map} +1 -1
- package/dist/tailwind-base.js.d.ts +12 -0
- package/dist/tailwind-base.js.map +1 -1
- package/dist/useSortable.js +1 -1
- package/dist/utils/helpers.js +15 -15
- package/dist/utils/helpers.js.map +1 -1
- package/package.json +15 -15
- package/styles/backwards-compat.css +373 -2851
- package/styles/main.css +8 -0
- package/styles/sofia-font.css +23 -27
- package/styles/theme.css +1033 -0
- package/dist/Field.vue_vue_type_script_setup_true_lang-DI6z3AE9.js.map +0 -1
- package/dist/Image.vue_vue_type_script_setup_true_lang-D5u4av0_.js.map +0 -1
- package/dist/Tabs.vue_vue_type_script_setup_true_lang-B3Irnlcd.js.map +0 -1
- package/dist/tailwind-base.d.ts +0 -333
- package/styles/base.css +0 -902
- package/tailwind-base.ts +0 -455
package/dist/TableHeaderRow.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { defineComponent as
|
|
1
|
+
import { defineComponent as k, inject as w, ref as T, createElementBlock as C, openBlock as l, createBlock as o, createCommentVNode as s, renderSlot as x, unref as e, normalizeClass as a, withCtx as E } from "vue";
|
|
2
2
|
import { t as R } from "./locale.js";
|
|
3
3
|
import S from "./Checkbox.js";
|
|
4
4
|
import { D as h } from "./DataView.keys-aSOnA4AD.js";
|
|
5
5
|
import "lodash-es/cloneDeep";
|
|
6
6
|
import "lodash-es/uniqueId";
|
|
7
|
-
import "./Illustration.vue_vue_type_script_setup_true_lang-
|
|
7
|
+
import "./Illustration.vue_vue_type_script_setup_true_lang-C1bPkWZZ.js";
|
|
8
8
|
import { T as B } from "./Table.keys-LHQf6FEH.js";
|
|
9
9
|
import n from "./TableHeaderCell.js";
|
|
10
10
|
import { _ as I } from "./_plugin-vue_export-helper-CHgC5LLL.js";
|
|
11
11
|
const $ = {
|
|
12
12
|
class: "stash-table-header-row",
|
|
13
13
|
"data-test": "stash-table-header-row"
|
|
14
|
-
}, N = /* @__PURE__ */
|
|
14
|
+
}, N = /* @__PURE__ */ k({
|
|
15
15
|
__name: "TableHeaderRow",
|
|
16
16
|
props: {
|
|
17
17
|
allRowsSelected: { type: Boolean, default: !1 },
|
|
@@ -22,7 +22,7 @@ const $ = {
|
|
|
22
22
|
const c = u, f = b, d = w(B.key);
|
|
23
23
|
if (!d)
|
|
24
24
|
throw new Error("TableHeaderRow must be used within a Table component");
|
|
25
|
-
const { hasCustomExpandToggle: _, isExpandable:
|
|
25
|
+
const { hasCustomExpandToggle: _, isExpandable: y, isSelectable: i } = d, { hasToolbar: r } = w(h.key, h.defaults), m = T(0);
|
|
26
26
|
function p() {
|
|
27
27
|
f("select"), m.value++;
|
|
28
28
|
}
|
|
@@ -34,7 +34,7 @@ const $ = {
|
|
|
34
34
|
}, null, 8, ["class"])) : s("", !0),
|
|
35
35
|
!e(r) && e(i) ? (l(), o(n, {
|
|
36
36
|
key: 1,
|
|
37
|
-
class: a(["stash-table-header-row__selection-cell
|
|
37
|
+
class: a(["stash-table-header-row__selection-cell min-w-[48px]", t.$style["row-control-cell"]]),
|
|
38
38
|
"data-test": "table-row-header|selection-cell"
|
|
39
39
|
}, {
|
|
40
40
|
default: E(() => [
|
|
@@ -50,7 +50,7 @@ const $ = {
|
|
|
50
50
|
]),
|
|
51
51
|
_: 1
|
|
52
52
|
}, 8, ["class"])) : s("", !0),
|
|
53
|
-
e(
|
|
53
|
+
e(y) && !e(_) ? (l(), o(n, {
|
|
54
54
|
key: 2,
|
|
55
55
|
class: a(t.$style["row-control-cell"]),
|
|
56
56
|
"data-test": "table-row-header-expansion-cell"
|
|
@@ -59,12 +59,12 @@ const $ = {
|
|
|
59
59
|
]));
|
|
60
60
|
}
|
|
61
61
|
}), A = {
|
|
62
|
-
"row-selection-checkbox": "_row-selection-
|
|
63
|
-
"row-control-cell": "_row-control-
|
|
62
|
+
"row-selection-checkbox": "_row-selection-checkbox_102yd_5",
|
|
63
|
+
"row-control-cell": "_row-control-cell_102yd_11"
|
|
64
64
|
}, H = {
|
|
65
65
|
$style: A
|
|
66
|
-
},
|
|
66
|
+
}, L = /* @__PURE__ */ I(N, [["__cssModules", H]]);
|
|
67
67
|
export {
|
|
68
|
-
|
|
68
|
+
L as default
|
|
69
69
|
};
|
|
70
70
|
//# sourceMappingURL=TableHeaderRow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableHeaderRow.js","sources":["../src/components/TableHeaderRow/TableHeaderRow.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { inject, ref } from 'vue';\n\n import { t } from '../../locale';\n import Checkbox from '../Checkbox/Checkbox.vue';\n import { DATA_VIEW_INJECTION } from '../DataView/DataView.keys';\n import { TABLE_INJECTION } from '../Table/Table.vue';\n import TableHeaderCell from '../TableHeaderCell/TableHeaderCell.vue';\n\n export interface TableHeaderRowProps {\n allRowsSelected?: boolean;\n someRowsSelected?: boolean;\n }\n\n const props = withDefaults(defineProps<TableHeaderRowProps>(), {\n allRowsSelected: false,\n someRowsSelected: false,\n });\n\n const emit = defineEmits<{\n (e: 'select'): void;\n }>();\n\n const tableInjection = inject(TABLE_INJECTION.key);\n\n if (!tableInjection) {\n throw new Error('TableHeaderRow must be used within a Table component');\n }\n\n const { hasCustomExpandToggle, isExpandable, isSelectable } = tableInjection;\n\n const { hasToolbar } = inject(DATA_VIEW_INJECTION.key, DATA_VIEW_INJECTION.defaults);\n\n const checkboxKey = ref(0);\n\n function onSelect() {\n emit('select');\n\n /**\n * In Vue (as of this writing), if a user checks a native checkbox but the v-model is `false` and does not change from `false`, then the checkbox will display as checked even though the v-model is still `false`.\n * Forcing a re-render with a `key` change allows the checkbox to stay unchecked if its v-model is still `false` and its v-model not been changed.\n * To verify that this is necessary, test the \"select all\" checkbox in the SelectionWithSomeDisabled story in Table.story.ts with and without the `key` attribute.\n */\n checkboxKey.value++;\n }\n</script>\n\n<template>\n <tr class=\"stash-table-header-row\" data-test=\"stash-table-header-row\">\n <!-- This is just an empty cell to ensure proper alignment. \"Select all\" control should be in the toolbar. -->\n <TableHeaderCell\n v-if=\"hasToolbar && isSelectable\"\n class=\"stash-table-header-row__selection-cell-empty\"\n :class=\"$style['row-control-cell']\"\n data-test=\"table-row-header|selection-cell-empty\"\n />\n\n <TableHeaderCell\n v-if=\"!hasToolbar && isSelectable\"\n class=\"stash-table-header-row__selection-cell
|
|
1
|
+
{"version":3,"file":"TableHeaderRow.js","sources":["../src/components/TableHeaderRow/TableHeaderRow.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { inject, ref } from 'vue';\n\n import { t } from '../../locale';\n import Checkbox from '../Checkbox/Checkbox.vue';\n import { DATA_VIEW_INJECTION } from '../DataView/DataView.keys';\n import { TABLE_INJECTION } from '../Table/Table.vue';\n import TableHeaderCell from '../TableHeaderCell/TableHeaderCell.vue';\n\n export interface TableHeaderRowProps {\n allRowsSelected?: boolean;\n someRowsSelected?: boolean;\n }\n\n const props = withDefaults(defineProps<TableHeaderRowProps>(), {\n allRowsSelected: false,\n someRowsSelected: false,\n });\n\n const emit = defineEmits<{\n (e: 'select'): void;\n }>();\n\n const tableInjection = inject(TABLE_INJECTION.key);\n\n if (!tableInjection) {\n throw new Error('TableHeaderRow must be used within a Table component');\n }\n\n const { hasCustomExpandToggle, isExpandable, isSelectable } = tableInjection;\n\n const { hasToolbar } = inject(DATA_VIEW_INJECTION.key, DATA_VIEW_INJECTION.defaults);\n\n const checkboxKey = ref(0);\n\n function onSelect() {\n emit('select');\n\n /**\n * In Vue (as of this writing), if a user checks a native checkbox but the v-model is `false` and does not change from `false`, then the checkbox will display as checked even though the v-model is still `false`.\n * Forcing a re-render with a `key` change allows the checkbox to stay unchecked if its v-model is still `false` and its v-model not been changed.\n * To verify that this is necessary, test the \"select all\" checkbox in the SelectionWithSomeDisabled story in Table.story.ts with and without the `key` attribute.\n */\n checkboxKey.value++;\n }\n</script>\n\n<template>\n <tr class=\"stash-table-header-row\" data-test=\"stash-table-header-row\">\n <!-- This is just an empty cell to ensure proper alignment. \"Select all\" control should be in the toolbar. -->\n <TableHeaderCell\n v-if=\"hasToolbar && isSelectable\"\n class=\"stash-table-header-row__selection-cell-empty\"\n :class=\"$style['row-control-cell']\"\n data-test=\"table-row-header|selection-cell-empty\"\n />\n\n <TableHeaderCell\n v-if=\"!hasToolbar && isSelectable\"\n class=\"stash-table-header-row__selection-cell min-w-[48px]\"\n :class=\"$style['row-control-cell']\"\n data-test=\"table-row-header|selection-cell\"\n >\n <Checkbox\n v-if=\"!hasToolbar\"\n :key=\"checkboxKey\"\n :class=\"$style['row-selection-checkbox']\"\n :checked=\"props.allRowsSelected\"\n :indeterminate=\"props.someRowsSelected && !props.allRowsSelected\"\n :title=\"t('ll.selectAll')\"\n @update:indeterminate=\"onSelect\"\n @update:checked=\"onSelect\"\n />\n </TableHeaderCell>\n\n <TableHeaderCell\n v-if=\"isExpandable && !hasCustomExpandToggle\"\n :class=\"$style['row-control-cell']\"\n data-test=\"table-row-header-expansion-cell\"\n />\n <!-- @slot default -->\n <slot></slot>\n </tr>\n</template>\n\n<style module>\n @reference \"../../../styles/main.css\";\n\n @layer utilities {\n .row-selection-checkbox label {\n padding: 0;\n min-height: --spacing(6);\n vertical-align: middle;\n }\n\n .row-control-cell {\n border-right: 0;\n }\n }\n</style>\n"],"names":["props","__props","emit","__emit","tableInjection","inject","TABLE_INJECTION","hasCustomExpandToggle","isExpandable","isSelectable","hasToolbar","DATA_VIEW_INJECTION","checkboxKey","ref","onSelect"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAcE,UAAMA,IAAQC,GAKRC,IAAOC,GAIPC,IAAiBC,EAAOC,EAAgB,GAAG;AAEjD,QAAI,CAACF;AACH,YAAM,IAAI,MAAM,sDAAsD;AAGxE,UAAM,EAAE,uBAAAG,GAAuB,cAAAC,GAAc,cAAAC,EAAA,IAAiBL,GAExD,EAAE,YAAAM,EAAA,IAAeL,EAAOM,EAAoB,KAAKA,EAAoB,QAAQ,GAE7EC,IAAcC,EAAI,CAAC;AAEzB,aAASC,IAAW;AAClB,MAAAZ,EAAK,QAAQ,GAObU,EAAY;AAAA,IACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/TableRow.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { defineComponent as D, useAttrs as M, useCssModule as V, useSlots as j, inject as L, ref as P, computed as k, watch as q, createElementBlock as
|
|
1
|
+
import { defineComponent as D, useAttrs as M, useCssModule as V, useSlots as j, inject as L, ref as P, computed as k, watch as q, createElementBlock as w, openBlock as r, Fragment as z, createElementVNode as F, createCommentVNode as u, mergeProps as J, unref as e, createBlock as E, renderSlot as y, normalizeClass as c, withCtx as _, createVNode as b } from "vue";
|
|
2
2
|
import O from "lodash-es/uniqueId";
|
|
3
|
-
import { t as
|
|
3
|
+
import { t as m } from "./locale.js";
|
|
4
4
|
import U from "./Checkbox.js";
|
|
5
5
|
import { _ as G } from "./ChevronToggle.vue_vue_type_script_setup_true_lang-Ce_qOXfR.js";
|
|
6
6
|
import { _ as H } from "./Expand.vue_vue_type_script_setup_true_lang-CiONJfAp.js";
|
|
7
7
|
import "lodash-es/cloneDeep";
|
|
8
8
|
import "./DataView.keys-aSOnA4AD.js";
|
|
9
|
-
import "./Illustration.vue_vue_type_script_setup_true_lang-
|
|
9
|
+
import "./Illustration.vue_vue_type_script_setup_true_lang-C1bPkWZZ.js";
|
|
10
10
|
import g from "./TableCell.js";
|
|
11
11
|
import { T as K } from "./Table.keys-LHQf6FEH.js";
|
|
12
12
|
import { _ as Q } from "./_plugin-vue_export-helper-CHgC5LLL.js";
|
|
@@ -22,68 +22,68 @@ const W = /* @__PURE__ */ D({
|
|
|
22
22
|
},
|
|
23
23
|
emits: ["update:isSelected", "update:isExpanded"],
|
|
24
24
|
setup(S, { emit: T }) {
|
|
25
|
-
const
|
|
26
|
-
if (!
|
|
25
|
+
const o = S, f = T, B = M(), t = V(), i = j(), h = L(K.key);
|
|
26
|
+
if (!h)
|
|
27
27
|
throw new Error("TableRow must be used within a Table component");
|
|
28
|
-
const { hasActions: R, hasCustomExpandToggle: v, isExpandable: $, isSelectable:
|
|
28
|
+
const { hasActions: R, hasCustomExpandToggle: v, isExpandable: $, isSelectable: x, layout: d, isLoading: I } = h, l = P(o.isExpanded), n = k(() => $.value && !!i.expansion), N = k(() => {
|
|
29
29
|
var s;
|
|
30
30
|
let a = ((s = i.default) == null ? void 0 : s.call(i, { toggleExpand: p }).length) ?? 0;
|
|
31
|
-
return
|
|
31
|
+
return x.value && (a += 1), n.value && !v.value && (a += 1), a;
|
|
32
32
|
}), C = O("table-row-");
|
|
33
33
|
function p(a) {
|
|
34
34
|
if (!n.value)
|
|
35
35
|
throw new Error("Cannot call `toggleExpand` on a non-expandable row. Provide an `expansion` slot.");
|
|
36
36
|
const s = typeof a == "boolean" ? a : !l.value;
|
|
37
|
-
l.value = s,
|
|
37
|
+
l.value = s, f("update:isExpanded", s);
|
|
38
38
|
}
|
|
39
39
|
return q(
|
|
40
|
-
() =>
|
|
41
|
-
() => p(
|
|
42
|
-
), (a, s) => (r(),
|
|
40
|
+
() => o.isExpanded,
|
|
41
|
+
() => p(o.isExpanded)
|
|
42
|
+
), (a, s) => (r(), w(z, null, [
|
|
43
43
|
F("tr", J({
|
|
44
44
|
class: ["stash-table-row", [
|
|
45
|
-
e(
|
|
46
|
-
e(
|
|
45
|
+
e(t).root,
|
|
46
|
+
e(t)[`layout--${e(d)}`],
|
|
47
47
|
{
|
|
48
|
-
[e(
|
|
49
|
-
[e(
|
|
50
|
-
[e(
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"stash-table-row--accent":
|
|
55
|
-
|
|
48
|
+
[e(t)["is-expandable"]]: n.value,
|
|
49
|
+
[e(t)["is-expanded"]]: l.value,
|
|
50
|
+
[e(t)["root--hidden-divider"]]: a.hideExpansionDivider,
|
|
51
|
+
"p-gutter": e(d) === "stack",
|
|
52
|
+
"mb-6 shadow lg:mb-0 lg:shadow-none": e(d) === "stack" && !n.value,
|
|
53
|
+
"pt-[60px]": e(R) && e(d) === "stack" && !e(x) && !e(I),
|
|
54
|
+
"stash-table-row--accent": o.accentColor,
|
|
55
|
+
relative: o.accentColor
|
|
56
56
|
}
|
|
57
57
|
]],
|
|
58
58
|
"data-test": "stash-table-row"
|
|
59
59
|
}, e(B)), [
|
|
60
|
-
e(
|
|
60
|
+
e(x) ? (r(), E(g, {
|
|
61
61
|
key: 0,
|
|
62
62
|
"is-control": "",
|
|
63
|
-
class: c(["stash-table-row__selection-cell
|
|
63
|
+
class: c(["stash-table-row__selection-cell min-w-[48px] lg:pl-3", e(t)["row-control-cell"]]),
|
|
64
64
|
"data-test": "stash-table-row|selection-cell"
|
|
65
65
|
}, {
|
|
66
66
|
default: _(() => [
|
|
67
67
|
b(U, {
|
|
68
|
-
class: c(e(
|
|
69
|
-
checked:
|
|
70
|
-
disabled:
|
|
71
|
-
title: e(
|
|
72
|
-
"onUpdate:checked": s[0] || (s[0] = (A) =>
|
|
68
|
+
class: c(e(t)["row-selection-checkbox"]),
|
|
69
|
+
checked: o.isSelected,
|
|
70
|
+
disabled: o.isSelectDisabled,
|
|
71
|
+
title: e(m)("ll.select.self"),
|
|
72
|
+
"onUpdate:checked": s[0] || (s[0] = (A) => f("update:isSelected", A))
|
|
73
73
|
}, null, 8, ["class", "checked", "disabled", "title"])
|
|
74
74
|
]),
|
|
75
75
|
_: 1
|
|
76
76
|
}, 8, ["class"])) : u("", !0),
|
|
77
77
|
n.value && !e(v) ? (r(), E(g, {
|
|
78
78
|
key: 1,
|
|
79
|
-
class: c(["stash-table-row__toggle-expansion-cell
|
|
79
|
+
class: c(["stash-table-row__toggle-expansion-cell px-0", e(t)["row-control-cell"]]),
|
|
80
80
|
"data-test": "stash-table-row|custom-expansion-cell",
|
|
81
81
|
"is-control": ""
|
|
82
82
|
}, {
|
|
83
83
|
default: _(() => [
|
|
84
84
|
b(G, {
|
|
85
85
|
"aria-controls": e(C),
|
|
86
|
-
"aria-label": l.value ? e(
|
|
86
|
+
"aria-label": l.value ? e(m)("ll.table.collapseRow") : e(m)("ll.table.expandRow"),
|
|
87
87
|
direction: l.value ? "up" : "down",
|
|
88
88
|
"is-expanded": l.value,
|
|
89
89
|
onClick: p
|
|
@@ -95,29 +95,29 @@ const W = /* @__PURE__ */ D({
|
|
|
95
95
|
isRowExpanded: l.value,
|
|
96
96
|
toggleExpand: p
|
|
97
97
|
}),
|
|
98
|
-
|
|
98
|
+
o.accentColor ? (r(), w("div", {
|
|
99
99
|
key: 2,
|
|
100
100
|
"data-test": "stash-table-row|accent",
|
|
101
101
|
class: c({
|
|
102
|
-
|
|
103
|
-
[`
|
|
104
|
-
|
|
105
|
-
"
|
|
106
|
-
"
|
|
107
|
-
"
|
|
108
|
-
"
|
|
102
|
+
absolute: o.accentColor,
|
|
103
|
+
[`bg-${o.accentColor}`]: o.accentColor,
|
|
104
|
+
block: o.accentColor,
|
|
105
|
+
"h-full": o.accentColor,
|
|
106
|
+
"w-1": o.accentColor,
|
|
107
|
+
"top-0": o.accentColor,
|
|
108
|
+
"left-0": o.accentColor
|
|
109
109
|
})
|
|
110
110
|
}, null, 2)) : u("", !0)
|
|
111
111
|
], 16),
|
|
112
|
-
n.value ? (r(),
|
|
112
|
+
n.value ? (r(), w("tr", {
|
|
113
113
|
key: 0,
|
|
114
|
-
class: c(["stash-table-row stash-table-row--expandable", e(
|
|
114
|
+
class: c(["stash-table-row stash-table-row--expandable", e(t)["row-expansion"]]),
|
|
115
115
|
"data-test": "stash-table-row|expansion-row"
|
|
116
116
|
}, [
|
|
117
117
|
b(H, {
|
|
118
118
|
is: "td",
|
|
119
119
|
id: e(C),
|
|
120
|
-
class: c(["
|
|
120
|
+
class: c(["border-none bg-white px-3 py-0", e(t)["row-expansion-content"]]),
|
|
121
121
|
"data-test": "stash-table-row|expansion-cell",
|
|
122
122
|
colspan: N.value,
|
|
123
123
|
"is-expanded": l.value
|
|
@@ -130,17 +130,17 @@ const W = /* @__PURE__ */ D({
|
|
|
130
130
|
], 2)) : u("", !0)
|
|
131
131
|
], 64));
|
|
132
132
|
}
|
|
133
|
-
}), X = "
|
|
133
|
+
}), X = "_root_27247_5", Y = {
|
|
134
134
|
root: X,
|
|
135
|
-
"is-expandable": "_is-
|
|
136
|
-
"root--hidden-divider": "_root--hidden-
|
|
137
|
-
"is-expanded": "_is-
|
|
138
|
-
"layout--scroll": "_layout--
|
|
139
|
-
"layout--stack": "_layout--
|
|
140
|
-
"row-selection-checkbox": "_row-selection-
|
|
141
|
-
"row-control-cell": "_row-control-
|
|
142
|
-
"row-expansion-content": "_row-expansion-
|
|
143
|
-
"row-expansion": "_row-
|
|
135
|
+
"is-expandable": "_is-expandable_27247_12",
|
|
136
|
+
"root--hidden-divider": "_root--hidden-divider_27247_17",
|
|
137
|
+
"is-expanded": "_is-expanded_27247_17",
|
|
138
|
+
"layout--scroll": "_layout--scroll_27247_25",
|
|
139
|
+
"layout--stack": "_layout--stack_27247_39",
|
|
140
|
+
"row-selection-checkbox": "_row-selection-checkbox_27247_59",
|
|
141
|
+
"row-control-cell": "_row-control-cell_27247_64",
|
|
142
|
+
"row-expansion-content": "_row-expansion-content_27247_75",
|
|
143
|
+
"row-expansion": "_row-expansion_27247_75"
|
|
144
144
|
}, Z = {
|
|
145
145
|
$style: Y
|
|
146
146
|
}, ue = /* @__PURE__ */ Q(W, [["__cssModules", Z]]);
|
package/dist/TableRow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableRow.js","sources":["../src/components/TableRow/TableRow.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, inject, ref, useAttrs, useCssModule, watch } from 'vue';\n\n import { StashCommonColor } from '../../../types/colors';\n import { t } from '../../locale';\n import Checkbox, { CheckboxProps } from '../Checkbox/Checkbox.vue';\n import ChevronToggle from '../ChevronToggle/ChevronToggle.vue';\n import Expand from '../Expand/Expand.vue';\n import { TABLE_INJECTION } from '../Table/Table.vue';\n import TableCell from '../TableCell/TableCell.vue';\n\n defineOptions({ inheritAttrs: false });\n\n export interface TableRowProps {\n hideExpansionDivider?: boolean;\n isExpanded?: boolean;\n isSelected?: boolean;\n isSelectDisabled?: boolean;\n /**\n * The accent color for the TableRow.\n */\n accentColor?: StashCommonColor;\n }\n\n const props = withDefaults(defineProps<TableRowProps>(), {\n /**\n * If true, hides the divider between the parent row and expansion row\n */\n hideExpansionDivider: false,\n isExpanded: false,\n isSelected: false,\n isSelectDisabled: false,\n accentColor: undefined,\n });\n\n const emit = defineEmits<{\n 'update:isSelected': [isChecked: CheckboxProps['checked']];\n 'update:isExpanded': [isExpanded: boolean];\n }>();\n\n const attrs = useAttrs();\n const classes = useCssModule();\n const slots = defineSlots<{\n default(props: { isRowExpanded?: boolean; toggleExpand: (value?: boolean) => void }): unknown[];\n expansion(): unknown[];\n }>();\n\n const tableInjection = inject(TABLE_INJECTION.key);\n\n if (!tableInjection) {\n throw new Error('TableRow must be used within a Table component');\n }\n\n const { hasActions, hasCustomExpandToggle, isExpandable, isSelectable, layout, isLoading } = tableInjection;\n\n const isRowExpanded = ref(props.isExpanded);\n const isRowExpandable = computed(() => isExpandable.value && !!slots.expansion);\n\n const childCellCount = computed(() => {\n let count = slots.default?.({ toggleExpand }).length ?? 0;\n\n if (isSelectable.value) {\n count += 1;\n }\n\n if (isRowExpandable.value && !hasCustomExpandToggle.value) {\n count += 1;\n }\n\n return count;\n });\n const rowId = uniqueId('table-row-');\n\n function toggleExpand(value?: boolean) {\n if (!isRowExpandable.value) {\n throw new Error('Cannot call `toggleExpand` on a non-expandable row. Provide an `expansion` slot.');\n }\n\n const isExpanded = typeof value === 'boolean' ? value : !isRowExpanded.value;\n\n isRowExpanded.value = isExpanded;\n emit('update:isExpanded', isExpanded);\n }\n\n watch(\n () => props.isExpanded,\n () => toggleExpand(props.isExpanded),\n );\n</script>\n\n<template>\n <tr\n class=\"stash-table-row\"\n :class=\"[\n classes.root,\n classes[`layout--${layout}`],\n {\n [classes['is-expandable']]: isRowExpandable,\n [classes['is-expanded']]: isRowExpanded,\n [classes['root--hidden-divider']]: hideExpansionDivider,\n 'tw-p-gutter': layout === 'stack',\n 'tw-mb-6 tw-shadow lg:tw-mb-0 lg:tw-shadow-none': layout === 'stack' && !isRowExpandable,\n 'tw-pt-[60px]': hasActions && layout === 'stack' && !isSelectable && !isLoading,\n 'stash-table-row--accent': props.accentColor,\n 'tw-relative': props.accentColor,\n },\n ]\"\n data-test=\"stash-table-row\"\n v-bind=\"attrs\"\n >\n <TableCell\n v-if=\"isSelectable\"\n is-control\n class=\"stash-table-row__selection-cell tw-min-w-[48px] lg:tw-pl-3\"\n :class=\"classes['row-control-cell']\"\n data-test=\"stash-table-row|selection-cell\"\n >\n <Checkbox\n :class=\"classes['row-selection-checkbox']\"\n :checked=\"props.isSelected\"\n :disabled=\"props.isSelectDisabled\"\n :title=\"t('ll.select.self')\"\n @update:checked=\"emit('update:isSelected', $event)\"\n />\n </TableCell>\n <TableCell\n v-if=\"isRowExpandable && !hasCustomExpandToggle\"\n class=\"stash-table-row__toggle-expansion-cell tw-px-0\"\n data-test=\"stash-table-row|custom-expansion-cell\"\n is-control\n :class=\"classes['row-control-cell']\"\n >\n <ChevronToggle\n :aria-controls=\"rowId\"\n :aria-label=\"isRowExpanded ? t('ll.table.collapseRow') : t('ll.table.expandRow')\"\n :direction=\"isRowExpanded ? 'up' : 'down'\"\n :is-expanded=\"isRowExpanded\"\n @click=\"toggleExpand\"\n />\n </TableCell>\n <!-- @slot default -->\n <slot :is-row-expanded=\"isRowExpanded\" :toggle-expand=\"toggleExpand\"></slot>\n <!-- Displays a 4px accent on the left of the table row -->\n <div\n v-if=\"props.accentColor\"\n data-test=\"stash-table-row|accent\"\n :class=\"{\n 'tw-absolute': props.accentColor,\n [`tw-bg-${props.accentColor}`]: props.accentColor,\n 'tw-block': props.accentColor,\n 'tw-h-full': props.accentColor,\n 'tw-w-1': props.accentColor,\n 'tw-top-0': props.accentColor,\n 'tw-left-0': props.accentColor,\n }\"\n ></div>\n </tr>\n <tr\n v-if=\"isRowExpandable\"\n class=\"stash-table-row stash-table-row--expandable\"\n :class=\"classes['row-expansion']\"\n data-test=\"stash-table-row|expansion-row\"\n >\n <Expand\n is=\"td\"\n :id=\"rowId\"\n class=\"tw-border-none tw-bg-white tw-px-3 tw-py-0\"\n data-test=\"stash-table-row|expansion-cell\"\n :class=\"classes['row-expansion-content']\"\n :colspan=\"childCellCount\"\n :is-expanded=\"isRowExpanded\"\n >\n <!-- @slot expansion, for expandable content -->\n <slot name=\"expansion\"></slot>\n </Expand>\n </tr>\n</template>\n\n<style module>\n .root {\n border: 0;\n }\n\n /**\n * Only takes effect when hideExpansionDivider is true, for a softer collapse transition as the bottom border re-appears\n */\n .is-expandable > td {\n border-bottom-color: var(--color-ice-200);\n transition: border-bottom-color 0.5s;\n }\n\n .root--hidden-divider.is-expanded > td {\n transition: border-bottom-color 0s;\n /**\n * Removes the grey cell background for 'control' cells at lower breakpoints, letting the white of the tr come through.\n */\n border-bottom-color: transparent;\n }\n\n .layout--scroll {\n border-radius: 0;\n box-shadow: none !important;\n margin: 0;\n }\n\n .layout--scroll:last-of-type {\n border: 0;\n }\n\n .layout--scroll:last-of-type td {\n border-bottom: none;\n }\n\n .layout--stack {\n align-items: stretch;\n background-color: var(--color-white);\n column-gap: var(--grid-gutter);\n display: grid;\n grid-template-columns: repeat(12, 1fr);\n position: relative;\n row-gap: var(--grid-gutter);\n }\n\n .layout--stack:not(.is-expanded) {\n border-radius: theme('borderRadius.DEFAULT');\n transition: border-radius 0.5s;\n }\n\n .layout--stack.is-expanded {\n border-top-left-radius: theme('borderRadius.DEFAULT');\n border-top-right-radius: theme('borderRadius.DEFAULT');\n }\n\n .row-selection-checkbox label {\n padding: 0;\n vertical-align: middle;\n }\n\n .layout--stack .row-control-cell {\n display: flex;\n align-items: center;\n min-width: 0;\n }\n\n /* On mobile, display controls on their own row, pushing other cells below */\n .row-control-cell + :not(.row-control-cell) {\n grid-column-start: 1;\n }\n\n .row-expansion-content {\n box-shadow: inset 0 -1px 0 0 var(--color-ice-200);\n }\n\n .layout--stack + .row-expansion,\n .layout--stack + .row-expansion > .row-expansion-content {\n display: block;\n }\n\n .layout--stack + .row-expansion > .row-expansion-content {\n border-top: 1px solid var(--color-ice-200);\n border-bottom-left-radius: theme('borderRadius.DEFAULT');\n border-bottom-right-radius: theme('borderRadius.DEFAULT');\n margin-bottom: theme('spacing.6');\n }\n\n .layout--stack.root--hidden-divider + .row-expansion > .row-expansion-content {\n border-top: none;\n }\n\n /* On large screens, match the styles for layout-SCROLL */\n @media screen('lg') {\n .layout--stack {\n align-items: unset;\n background-color: unset;\n border: 0;\n border-bottom: 1px solid var(--color-ice-200);\n border-radius: 0;\n box-shadow: none;\n column-gap: unset;\n display: table-row;\n grid-template-columns: unset;\n row-gap: unset;\n }\n\n .layout--stack:last-of-type {\n border-bottom: 0;\n }\n\n .layout--stack .row-control-cell {\n display: table-cell;\n }\n\n .layout--stack + .row-expansion {\n display: table-row;\n }\n\n .layout--stack + .row-expansion > .row-expansion-content {\n border-top: unset;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n display: table-cell;\n margin-bottom: unset;\n }\n\n .row-control-cell + :not(.row-control-cell) {\n grid-column-start: unset;\n }\n }\n</style>\n"],"names":["props","__props","emit","__emit","attrs","useAttrs","classes","useCssModule","slots","_useSlots","tableInjection","inject","TABLE_INJECTION","hasActions","hasCustomExpandToggle","isExpandable","isSelectable","layout","isLoading","isRowExpanded","ref","isRowExpandable","computed","childCellCount","count","_a","toggleExpand","rowId","uniqueId","value","isExpanded","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyBE,UAAMA,IAAQC,GAWRC,IAAOC,GAKPC,IAAQC,EAAA,GACRC,IAAUC,EAAA,GACVC,IAAQC,EAAA,GAKRC,IAAiBC,EAAOC,EAAgB,GAAG;AAEjD,QAAI,CAACF;AACH,YAAM,IAAI,MAAM,gDAAgD;AAGlE,UAAM,EAAE,YAAAG,GAAY,uBAAAC,GAAuB,cAAAC,GAAc,cAAAC,GAAc,QAAAC,GAAQ,WAAAC,MAAcR,GAEvFS,IAAgBC,EAAIpB,EAAM,UAAU,GACpCqB,IAAkBC,EAAS,MAAMP,EAAa,SAAS,CAAC,CAACP,EAAM,SAAS,GAExEe,IAAiBD,EAAS,MAAM;;AACpC,UAAIE,MAAQC,IAAAjB,EAAM,YAAN,gBAAAiB,EAAA,KAAAjB,GAAgB,EAAE,cAAAkB,EAAA,GAAgB,WAAU;AAExD,aAAIV,EAAa,UACfQ,KAAS,IAGPH,EAAgB,SAAS,CAACP,EAAsB,UAClDU,KAAS,IAGJA;AAAA,IACT,CAAC,GACKG,IAAQC,EAAS,YAAY;AAEnC,aAASF,EAAaG,GAAiB;AACrC,UAAI,CAACR,EAAgB;AACnB,cAAM,IAAI,MAAM,kFAAkF;AAGpG,YAAMS,IAAa,OAAOD,KAAU,YAAYA,IAAQ,CAACV,EAAc;AAEvE,MAAAA,EAAc,QAAQW,GACtB5B,EAAK,qBAAqB4B,CAAU;AAAA,IACtC;AAEA,WAAAC;AAAA,MACE,MAAM/B,EAAM;AAAA,MACZ,MAAM0B,EAAa1B,EAAM,UAAU;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"TableRow.js","sources":["../src/components/TableRow/TableRow.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, inject, ref, useAttrs, useCssModule, watch } from 'vue';\n\n import { StashCommonColor } from '../../../types/colors';\n import { t } from '../../locale';\n import Checkbox, { CheckboxProps } from '../Checkbox/Checkbox.vue';\n import ChevronToggle from '../ChevronToggle/ChevronToggle.vue';\n import Expand from '../Expand/Expand.vue';\n import { TABLE_INJECTION } from '../Table/Table.vue';\n import TableCell from '../TableCell/TableCell.vue';\n\n defineOptions({ inheritAttrs: false });\n\n export interface TableRowProps {\n hideExpansionDivider?: boolean;\n isExpanded?: boolean;\n isSelected?: boolean;\n isSelectDisabled?: boolean;\n /**\n * The accent color for the TableRow.\n */\n accentColor?: StashCommonColor;\n }\n\n const props = withDefaults(defineProps<TableRowProps>(), {\n /**\n * If true, hides the divider between the parent row and expansion row\n */\n hideExpansionDivider: false,\n isExpanded: false,\n isSelected: false,\n isSelectDisabled: false,\n accentColor: undefined,\n });\n\n const emit = defineEmits<{\n 'update:isSelected': [isChecked: CheckboxProps['checked']];\n 'update:isExpanded': [isExpanded: boolean];\n }>();\n\n const attrs = useAttrs();\n const classes = useCssModule();\n const slots = defineSlots<{\n default(props: { isRowExpanded?: boolean; toggleExpand: (value?: boolean) => void }): unknown[];\n expansion(): unknown[];\n }>();\n\n const tableInjection = inject(TABLE_INJECTION.key);\n\n if (!tableInjection) {\n throw new Error('TableRow must be used within a Table component');\n }\n\n const { hasActions, hasCustomExpandToggle, isExpandable, isSelectable, layout, isLoading } = tableInjection;\n\n const isRowExpanded = ref(props.isExpanded);\n const isRowExpandable = computed(() => isExpandable.value && !!slots.expansion);\n\n const childCellCount = computed(() => {\n let count = slots.default?.({ toggleExpand }).length ?? 0;\n\n if (isSelectable.value) {\n count += 1;\n }\n\n if (isRowExpandable.value && !hasCustomExpandToggle.value) {\n count += 1;\n }\n\n return count;\n });\n const rowId = uniqueId('table-row-');\n\n function toggleExpand(value?: boolean) {\n if (!isRowExpandable.value) {\n throw new Error('Cannot call `toggleExpand` on a non-expandable row. Provide an `expansion` slot.');\n }\n\n const isExpanded = typeof value === 'boolean' ? value : !isRowExpanded.value;\n\n isRowExpanded.value = isExpanded;\n emit('update:isExpanded', isExpanded);\n }\n\n watch(\n () => props.isExpanded,\n () => toggleExpand(props.isExpanded),\n );\n</script>\n\n<template>\n <tr\n class=\"stash-table-row\"\n :class=\"[\n classes.root,\n classes[`layout--${layout}`],\n {\n [classes['is-expandable']]: isRowExpandable,\n [classes['is-expanded']]: isRowExpanded,\n [classes['root--hidden-divider']]: hideExpansionDivider,\n 'p-gutter': layout === 'stack',\n 'mb-6 shadow lg:mb-0 lg:shadow-none': layout === 'stack' && !isRowExpandable,\n 'pt-[60px]': hasActions && layout === 'stack' && !isSelectable && !isLoading,\n 'stash-table-row--accent': props.accentColor,\n relative: props.accentColor,\n },\n ]\"\n data-test=\"stash-table-row\"\n v-bind=\"attrs\"\n >\n <TableCell\n v-if=\"isSelectable\"\n is-control\n class=\"stash-table-row__selection-cell min-w-[48px] lg:pl-3\"\n :class=\"classes['row-control-cell']\"\n data-test=\"stash-table-row|selection-cell\"\n >\n <Checkbox\n :class=\"classes['row-selection-checkbox']\"\n :checked=\"props.isSelected\"\n :disabled=\"props.isSelectDisabled\"\n :title=\"t('ll.select.self')\"\n @update:checked=\"emit('update:isSelected', $event)\"\n />\n </TableCell>\n <TableCell\n v-if=\"isRowExpandable && !hasCustomExpandToggle\"\n class=\"stash-table-row__toggle-expansion-cell px-0\"\n data-test=\"stash-table-row|custom-expansion-cell\"\n is-control\n :class=\"classes['row-control-cell']\"\n >\n <ChevronToggle\n :aria-controls=\"rowId\"\n :aria-label=\"isRowExpanded ? t('ll.table.collapseRow') : t('ll.table.expandRow')\"\n :direction=\"isRowExpanded ? 'up' : 'down'\"\n :is-expanded=\"isRowExpanded\"\n @click=\"toggleExpand\"\n />\n </TableCell>\n <!-- @slot default -->\n <slot :is-row-expanded=\"isRowExpanded\" :toggle-expand=\"toggleExpand\"></slot>\n <!-- Displays a 4px accent on the left of the table row -->\n <div\n v-if=\"props.accentColor\"\n data-test=\"stash-table-row|accent\"\n :class=\"{\n absolute: props.accentColor,\n [`bg-${props.accentColor}`]: props.accentColor,\n block: props.accentColor,\n 'h-full': props.accentColor,\n 'w-1': props.accentColor,\n 'top-0': props.accentColor,\n 'left-0': props.accentColor,\n }\"\n ></div>\n </tr>\n <tr\n v-if=\"isRowExpandable\"\n class=\"stash-table-row stash-table-row--expandable\"\n :class=\"classes['row-expansion']\"\n data-test=\"stash-table-row|expansion-row\"\n >\n <Expand\n is=\"td\"\n :id=\"rowId\"\n class=\"border-none bg-white px-3 py-0\"\n data-test=\"stash-table-row|expansion-cell\"\n :class=\"classes['row-expansion-content']\"\n :colspan=\"childCellCount\"\n :is-expanded=\"isRowExpanded\"\n >\n <!-- @slot expansion, for expandable content -->\n <slot name=\"expansion\"></slot>\n </Expand>\n </tr>\n</template>\n\n<style module>\n @reference \"../../../styles/main.css\";\n\n @layer utilities {\n .root {\n border: 0;\n }\n\n /**\n * Only takes effect when hideExpansionDivider is true, for a softer collapse transition as the bottom border re-appears\n */\n .is-expandable > td {\n border-bottom-color: var(--color-ice-200);\n transition: border-bottom-color 0.5s;\n }\n\n .root--hidden-divider.is-expanded > td {\n transition: border-bottom-color 0s;\n /**\n * Removes the grey cell background for 'control' cells at lower breakpoints, letting the white of the tr come through.\n */\n border-bottom-color: transparent;\n }\n\n .layout--scroll {\n border-radius: 0;\n box-shadow: none !important;\n margin: 0;\n }\n\n .layout--scroll:last-of-type {\n border: 0;\n }\n\n .layout--scroll:last-of-type td {\n border-bottom: none;\n }\n\n .layout--stack {\n align-items: stretch;\n background-color: var(--color-white);\n column-gap: var(--grid-gutter);\n display: grid;\n grid-template-columns: repeat(12, 1fr);\n position: relative;\n row-gap: var(--grid-gutter);\n }\n\n .layout--stack:not(.is-expanded) {\n border-radius: var(--radius-sm);\n transition: border-radius 0.5s;\n }\n\n .layout--stack.is-expanded {\n border-top-left-radius: var(--radius-sm);\n border-top-right-radius: var(--radius-sm);\n }\n\n .row-selection-checkbox label {\n padding: 0;\n vertical-align: middle;\n }\n\n .layout--stack .row-control-cell {\n display: flex;\n align-items: center;\n min-width: 0;\n }\n\n /* On mobile, display controls on their own row, pushing other cells below */\n .row-control-cell + :not(.row-control-cell) {\n grid-column-start: 1;\n }\n\n .row-expansion-content {\n box-shadow: inset 0 -1px 0 0 var(--color-ice-200);\n }\n\n .layout--stack + .row-expansion,\n .layout--stack + .row-expansion > .row-expansion-content {\n display: block;\n }\n\n .layout--stack + .row-expansion > .row-expansion-content {\n border-top: 1px solid var(--color-ice-200);\n border-bottom-left-radius: var(--radius-sm);\n border-bottom-right-radius: var(--radius-sm);\n margin-bottom: --spacing(6);\n }\n\n .layout--stack.root--hidden-divider + .row-expansion > .row-expansion-content {\n border-top: none;\n }\n\n /* On large screens, match the styles for layout-SCROLL */\n @media (width >= theme(--breakpoint-lg)) {\n .layout--stack {\n align-items: unset;\n background-color: unset;\n border: 0;\n border-bottom: 1px solid var(--color-ice-200);\n border-radius: 0;\n box-shadow: none;\n column-gap: unset;\n display: table-row;\n grid-template-columns: unset;\n row-gap: unset;\n }\n\n .layout--stack:last-of-type {\n border-bottom: 0;\n }\n\n .layout--stack .row-control-cell {\n display: table-cell;\n }\n\n .layout--stack + .row-expansion {\n display: table-row;\n }\n\n .layout--stack + .row-expansion > .row-expansion-content {\n border-top: unset;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n display: table-cell;\n margin-bottom: unset;\n }\n\n .row-control-cell + :not(.row-control-cell) {\n grid-column-start: unset;\n }\n }\n }\n</style>\n"],"names":["props","__props","emit","__emit","attrs","useAttrs","classes","useCssModule","slots","_useSlots","tableInjection","inject","TABLE_INJECTION","hasActions","hasCustomExpandToggle","isExpandable","isSelectable","layout","isLoading","isRowExpanded","ref","isRowExpandable","computed","childCellCount","count","_a","toggleExpand","rowId","uniqueId","value","isExpanded","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyBE,UAAMA,IAAQC,GAWRC,IAAOC,GAKPC,IAAQC,EAAA,GACRC,IAAUC,EAAA,GACVC,IAAQC,EAAA,GAKRC,IAAiBC,EAAOC,EAAgB,GAAG;AAEjD,QAAI,CAACF;AACH,YAAM,IAAI,MAAM,gDAAgD;AAGlE,UAAM,EAAE,YAAAG,GAAY,uBAAAC,GAAuB,cAAAC,GAAc,cAAAC,GAAc,QAAAC,GAAQ,WAAAC,MAAcR,GAEvFS,IAAgBC,EAAIpB,EAAM,UAAU,GACpCqB,IAAkBC,EAAS,MAAMP,EAAa,SAAS,CAAC,CAACP,EAAM,SAAS,GAExEe,IAAiBD,EAAS,MAAM;;AACpC,UAAIE,MAAQC,IAAAjB,EAAM,YAAN,gBAAAiB,EAAA,KAAAjB,GAAgB,EAAE,cAAAkB,EAAA,GAAgB,WAAU;AAExD,aAAIV,EAAa,UACfQ,KAAS,IAGPH,EAAgB,SAAS,CAACP,EAAsB,UAClDU,KAAS,IAGJA;AAAA,IACT,CAAC,GACKG,IAAQC,EAAS,YAAY;AAEnC,aAASF,EAAaG,GAAiB;AACrC,UAAI,CAACR,EAAgB;AACnB,cAAM,IAAI,MAAM,kFAAkF;AAGpG,YAAMS,IAAa,OAAOD,KAAU,YAAYA,IAAQ,CAACV,EAAc;AAEvE,MAAAA,EAAc,QAAQW,GACtB5B,EAAK,qBAAqB4B,CAAU;AAAA,IACtC;AAEA,WAAAC;AAAA,MACE,MAAM/B,EAAM;AAAA,MACZ,MAAM0B,EAAa1B,EAAM,UAAU;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/Tabs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { _ as r } from "./Tabs.vue_vue_type_script_setup_true_lang-
|
|
2
|
-
import { T as t, a as f } from "./Tabs.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
import { _ as r } from "./Tabs.vue_vue_type_script_setup_true_lang-BVTCcK6M.js";
|
|
2
|
+
import { T as t, a as f } from "./Tabs.vue_vue_type_script_setup_true_lang-BVTCcK6M.js";
|
|
3
3
|
export {
|
|
4
4
|
t as TABS_INJECTION,
|
|
5
5
|
f as TabVariant,
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { defineComponent as N, computed as f, provide as R, useTemplateRef as
|
|
2
|
-
import { t as
|
|
1
|
+
import { defineComponent as N, computed as f, provide as R, useTemplateRef as y, onMounted as S, onUpdated as B, watch as $, onBeforeUnmount as D, createElementBlock as C, openBlock as p, createBlock as x, unref as A, normalizeClass as v, withCtx as b, renderSlot as h, createElementVNode as E, createTextVNode as H, createVNode as O, toDisplayString as j } from "vue";
|
|
2
|
+
import { t as g } from "./locale.js";
|
|
3
3
|
import q from "./Icon.js";
|
|
4
4
|
import z from "./MoreActions.js";
|
|
5
5
|
const J = Object.freeze({
|
|
6
6
|
key: Symbol("TABS_INJECTION_KEY")
|
|
7
7
|
});
|
|
8
|
-
var
|
|
8
|
+
var w = /* @__PURE__ */ ((a) => (a.Line = "line", a.Enclosed = "enclosed", a))(w || {});
|
|
9
9
|
const U = ["aria-expanded", "onClick"], F = /* @__PURE__ */ N({
|
|
10
10
|
__name: "Tabs",
|
|
11
11
|
props: {
|
|
12
12
|
activeTab: {},
|
|
13
|
-
variant: { default:
|
|
13
|
+
variant: { default: w.Line }
|
|
14
14
|
},
|
|
15
15
|
emits: ["update:activeTab"],
|
|
16
16
|
setup(a, { emit: M }) {
|
|
@@ -30,20 +30,20 @@ const U = ["aria-expanded", "onClick"], F = /* @__PURE__ */ N({
|
|
|
30
30
|
variant: f(() => o.variant),
|
|
31
31
|
setActiveTab: L
|
|
32
32
|
});
|
|
33
|
-
const r =
|
|
34
|
-
function
|
|
33
|
+
const r = y("moreDropdownMenuRef"), i = y("tabsContainerRef"), l = /* @__PURE__ */ new Map();
|
|
34
|
+
function k() {
|
|
35
35
|
l.forEach((e, t) => {
|
|
36
36
|
t.removeEventListener("click", e);
|
|
37
37
|
}), l.clear();
|
|
38
38
|
}
|
|
39
39
|
function c() {
|
|
40
40
|
if (!r.value) return;
|
|
41
|
-
|
|
41
|
+
k(), r.value.querySelectorAll("[data-action-id]").forEach((t) => {
|
|
42
42
|
const n = t.getAttribute("data-action-id");
|
|
43
43
|
if (!n) return;
|
|
44
44
|
const d = s.value === n;
|
|
45
45
|
t.setAttribute("aria-selected", d ? "true" : "false");
|
|
46
|
-
const
|
|
46
|
+
const T = () => {
|
|
47
47
|
if (i.value) {
|
|
48
48
|
const u = i.value.querySelector(
|
|
49
49
|
`[role="tab"][data-action-id="${n}"]`
|
|
@@ -51,7 +51,7 @@ const U = ["aria-expanded", "onClick"], F = /* @__PURE__ */ N({
|
|
|
51
51
|
m && m instanceof HTMLElement && m.click();
|
|
52
52
|
}
|
|
53
53
|
};
|
|
54
|
-
t.addEventListener("click",
|
|
54
|
+
t.addEventListener("click", T), l.set(t, T);
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
return S(() => {
|
|
@@ -61,63 +61,63 @@ const U = ["aria-expanded", "onClick"], F = /* @__PURE__ */ N({
|
|
|
61
61
|
}), $(s, () => {
|
|
62
62
|
c();
|
|
63
63
|
}), D(() => {
|
|
64
|
-
|
|
65
|
-
}), (e, t) => (p(),
|
|
64
|
+
k();
|
|
65
|
+
}), (e, t) => (p(), C("div", {
|
|
66
66
|
ref_key: "tabsContainerRef",
|
|
67
67
|
ref: i,
|
|
68
|
-
class: "stash-tabs
|
|
68
|
+
class: "stash-tabs relative",
|
|
69
69
|
role: "tabList",
|
|
70
70
|
"data-test": "stash-tabs"
|
|
71
71
|
}, [
|
|
72
72
|
e.$slots["more-actions"] ? (p(), x(z, {
|
|
73
73
|
key: 0,
|
|
74
|
-
class: v(["stash-tabs-list
|
|
74
|
+
class: v(["stash-tabs-list flex items-end", {
|
|
75
75
|
"stash-tabs-list--line": e.variant === "line",
|
|
76
76
|
"stash-tabs-list--enclosed": e.variant === "enclosed",
|
|
77
|
-
"
|
|
77
|
+
"gap-6": e.variant === "line"
|
|
78
78
|
}]),
|
|
79
|
-
"more-button-text":
|
|
79
|
+
"more-button-text": A(g)("ll.more"),
|
|
80
80
|
"dropdown-mode": "custom",
|
|
81
81
|
"actions-container-class": {
|
|
82
|
-
"
|
|
83
|
-
"
|
|
82
|
+
"gap-0": e.variant === "enclosed",
|
|
83
|
+
"gap-6": e.variant === "line"
|
|
84
84
|
},
|
|
85
85
|
"actions-container-tag": "ul"
|
|
86
86
|
}, {
|
|
87
|
-
"more-actions":
|
|
88
|
-
|
|
87
|
+
"more-actions": b(() => [
|
|
88
|
+
E("div", {
|
|
89
89
|
ref_key: "moreDropdownMenuRef",
|
|
90
90
|
ref: r
|
|
91
91
|
}, [
|
|
92
|
-
|
|
92
|
+
h(e.$slots, "more-actions")
|
|
93
93
|
], 512)
|
|
94
94
|
]),
|
|
95
|
-
toggle:
|
|
96
|
-
|
|
95
|
+
toggle: b(({ toggle: n, isOpen: d }) => [
|
|
96
|
+
E("button", {
|
|
97
97
|
"aria-haspopup": "menu",
|
|
98
98
|
"aria-expanded": d,
|
|
99
|
-
class: v(["
|
|
99
|
+
class: v(["flex cursor-pointer items-center justify-center border-solid px-6 py-1.5 text-sm font-medium text-blue-500 hover:text-blue-700", { "border-t-4 border-transparent": o.variant === "enclosed" }]),
|
|
100
100
|
type: "button",
|
|
101
101
|
onClick: n
|
|
102
102
|
}, [
|
|
103
|
-
H(j(
|
|
103
|
+
H(j(A(g)("ll.more")) + " ", 1),
|
|
104
104
|
O(q, { name: "caret-down" })
|
|
105
105
|
], 10, U)
|
|
106
106
|
]),
|
|
107
|
-
default:
|
|
108
|
-
|
|
107
|
+
default: b(() => [
|
|
108
|
+
h(e.$slots, "default")
|
|
109
109
|
]),
|
|
110
110
|
_: 3
|
|
111
|
-
}, 8, ["class", "more-button-text", "actions-container-class"])) : (p(),
|
|
111
|
+
}, 8, ["class", "more-button-text", "actions-container-class"])) : (p(), C("ul", {
|
|
112
112
|
key: 1,
|
|
113
|
-
class: v(["stash-tabs-list
|
|
113
|
+
class: v(["stash-tabs-list flex items-end overflow-x-scroll", {
|
|
114
114
|
"stash-tabs-list--line": e.variant === "line",
|
|
115
115
|
"stash-tabs-list--enclosed": e.variant === "enclosed",
|
|
116
|
-
"
|
|
117
|
-
"
|
|
116
|
+
"gap-0": e.variant === "enclosed",
|
|
117
|
+
"gap-6": e.variant === "line"
|
|
118
118
|
}])
|
|
119
119
|
}, [
|
|
120
|
-
|
|
120
|
+
h(e.$slots, "default")
|
|
121
121
|
], 2))
|
|
122
122
|
], 512));
|
|
123
123
|
}
|
|
@@ -125,6 +125,6 @@ const U = ["aria-expanded", "onClick"], F = /* @__PURE__ */ N({
|
|
|
125
125
|
export {
|
|
126
126
|
J as T,
|
|
127
127
|
F as _,
|
|
128
|
-
|
|
128
|
+
w as a
|
|
129
129
|
};
|
|
130
|
-
//# sourceMappingURL=Tabs.vue_vue_type_script_setup_true_lang-
|
|
130
|
+
//# sourceMappingURL=Tabs.vue_vue_type_script_setup_true_lang-BVTCcK6M.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.vue_vue_type_script_setup_true_lang-BVTCcK6M.js","sources":["../src/components/Tabs/keys.ts","../src/components/Tabs/models.ts","../src/components/Tabs/Tabs.vue"],"sourcesContent":["import { Injection } from '../../../types/utils';\nimport { TabsInjection } from './models';\n\nexport const TABS_INJECTION: Injection<TabsInjection> = Object.freeze({\n key: Symbol('TABS_INJECTION_KEY'),\n});\n","import { ComputedRef } from 'vue';\n\nexport enum TabVariant {\n Line = 'line',\n Enclosed = 'enclosed',\n}\n\nexport type TabVariants = `${TabVariant}`;\n\nexport interface TabsInjection {\n activeTab: ComputedRef<string>;\n variant: ComputedRef<TabVariants>;\n setActiveTab: (newTabValue: string) => void;\n}\n","<script lang=\"ts\">\n import { TabVariant, TabVariants } from './models';\n\n export * from './keys';\n export * from './models';\n\n export interface TabsProps {\n /**\n * The currently active tab value\n */\n activeTab: string;\n\n /**\n * Tabs variant\n */\n variant?: TabVariants;\n }\n</script>\n\n<script setup lang=\"ts\">\n import { computed, onBeforeUnmount, onMounted, onUpdated, provide, useTemplateRef, watch } from 'vue';\n\n import { t } from '../../locale';\n import Icon from '../Icon/Icon.vue';\n import MoreActions from '../MoreActions/MoreActions.vue';\n import { TABS_INJECTION } from './keys';\n\n const emit = defineEmits<{\n (e: 'update:activeTab', newTabValue: TabsProps['activeTab']): void;\n }>();\n\n const props = withDefaults(defineProps<TabsProps>(), {\n variant: TabVariant.Line,\n });\n\n const currentActiveTab = computed({\n get() {\n return props.activeTab;\n },\n set(nv: TabsProps['activeTab']) {\n emit('update:activeTab', nv);\n },\n });\n\n function setActiveTab(newTabValue: TabsProps['activeTab']) {\n currentActiveTab.value = newTabValue;\n }\n\n provide(TABS_INJECTION.key, {\n activeTab: computed(() => currentActiveTab.value),\n variant: computed(() => props.variant),\n setActiveTab,\n });\n\n const moreDropdownMenuRef = useTemplateRef<HTMLElement>('moreDropdownMenuRef');\n const tabsContainerRef = useTemplateRef<HTMLElement>('tabsContainerRef');\n\n // Store event listeners to allow proper cleanup\n const eventListeners = new Map<Element, EventListener>();\n\n function cleanupMoreActionsHandlers() {\n eventListeners.forEach((listener, element) => {\n element.removeEventListener('click', listener);\n });\n eventListeners.clear();\n }\n\n // Setup automatic handlers for MenuItem elements in more-actions dropdown\n function setupMoreActionsHandlers() {\n if (!moreDropdownMenuRef.value) return;\n\n // Remove existing listeners first to prevent duplication\n cleanupMoreActionsHandlers();\n\n const menuItems = moreDropdownMenuRef.value.querySelectorAll('[data-action-id]');\n\n menuItems.forEach((item) => {\n const actionId = item.getAttribute('data-action-id');\n if (!actionId) return;\n\n // Update aria-selected based on active tab\n const isActive = currentActiveTab.value === actionId;\n item.setAttribute('aria-selected', isActive ? 'true' : 'false');\n\n // Create and store the listener\n const listener = () => {\n // Find and click the original tab in the actions container\n if (tabsContainerRef.value) {\n const originalTab = tabsContainerRef.value.querySelector<HTMLElement>(\n `[role=\"tab\"][data-action-id=\"${actionId}\"]`,\n );\n const firstChild = originalTab?.firstChild;\n if (firstChild && firstChild instanceof HTMLElement) {\n firstChild.click();\n }\n }\n };\n\n item.addEventListener('click', listener);\n eventListeners.set(item, listener);\n });\n }\n\n onMounted(() => {\n setupMoreActionsHandlers();\n });\n\n onUpdated(() => {\n setupMoreActionsHandlers();\n });\n\n watch(currentActiveTab, () => {\n setupMoreActionsHandlers();\n });\n\n onBeforeUnmount(() => {\n cleanupMoreActionsHandlers();\n });\n</script>\n\n<template>\n <div ref=\"tabsContainerRef\" class=\"stash-tabs relative\" role=\"tabList\" data-test=\"stash-tabs\">\n <template v-if=\"$slots['more-actions']\">\n <MoreActions\n class=\"stash-tabs-list flex items-end\"\n :class=\"{\n 'stash-tabs-list--line': variant === 'line',\n 'stash-tabs-list--enclosed': variant === 'enclosed',\n 'gap-6': variant === 'line',\n }\"\n :more-button-text=\"t('ll.more')\"\n dropdown-mode=\"custom\"\n :actions-container-class=\"{\n 'gap-0': variant === 'enclosed',\n 'gap-6': variant === 'line',\n }\"\n actions-container-tag=\"ul\"\n >\n <slot></slot>\n\n <template #more-actions>\n <div ref=\"moreDropdownMenuRef\">\n <slot name=\"more-actions\"></slot>\n </div>\n </template>\n\n <template #toggle=\"{ toggle, isOpen }\">\n <button\n aria-haspopup=\"menu\"\n :aria-expanded=\"isOpen\"\n class=\"flex cursor-pointer items-center justify-center border-solid px-6 py-1.5 text-sm font-medium text-blue-500 hover:text-blue-700\"\n :class=\"{ 'border-t-4 border-transparent': props.variant === 'enclosed' }\"\n type=\"button\"\n @click=\"toggle\"\n >\n {{ t('ll.more') }}\n <Icon name=\"caret-down\" />\n </button>\n </template>\n </MoreActions>\n </template>\n\n <template v-else>\n <ul\n class=\"stash-tabs-list flex items-end overflow-x-scroll\"\n :class=\"{\n 'stash-tabs-list--line': variant === 'line',\n 'stash-tabs-list--enclosed': variant === 'enclosed',\n 'gap-0': variant === 'enclosed',\n 'gap-6': variant === 'line',\n }\"\n >\n <slot></slot>\n </ul>\n </template>\n </div>\n</template>\n"],"names":["TABS_INJECTION","TabVariant","emit","__emit","props","__props","currentActiveTab","computed","nv","setActiveTab","newTabValue","provide","moreDropdownMenuRef","useTemplateRef","tabsContainerRef","eventListeners","cleanupMoreActionsHandlers","listener","element","setupMoreActionsHandlers","item","actionId","isActive","originalTab","firstChild","onMounted","onUpdated","watch","onBeforeUnmount"],"mappings":";;;;AAGO,MAAMA,IAA2C,OAAO,OAAO;AAAA,EACpE,KAAK,OAAO,oBAAoB;AAClC,CAAC;ACHM,IAAKC,sBAAAA,OACVA,EAAA,OAAO,QACPA,EAAA,WAAW,YAFDA,IAAAA,KAAA,CAAA,CAAA;;;;;;;;;ACyBV,UAAMC,IAAOC,GAIPC,IAAQC,GAIRC,IAAmBC,EAAS;AAAA,MAChC,MAAM;AACJ,eAAOH,EAAM;AAAA,MACf;AAAA,MACA,IAAII,GAA4B;AAC9B,QAAAN,EAAK,oBAAoBM,CAAE;AAAA,MAC7B;AAAA,IAAA,CACD;AAED,aAASC,EAAaC,GAAqC;AACzD,MAAAJ,EAAiB,QAAQI;AAAA,IAC3B;AAEA,IAAAC,EAAQX,EAAe,KAAK;AAAA,MAC1B,WAAWO,EAAS,MAAMD,EAAiB,KAAK;AAAA,MAChD,SAASC,EAAS,MAAMH,EAAM,OAAO;AAAA,MACrC,cAAAK;AAAA,IAAA,CACD;AAED,UAAMG,IAAsBC,EAA4B,qBAAqB,GACvEC,IAAmBD,EAA4B,kBAAkB,GAGjEE,wBAAqB,IAAA;AAE3B,aAASC,IAA6B;AACpC,MAAAD,EAAe,QAAQ,CAACE,GAAUC,MAAY;AAC5C,QAAAA,EAAQ,oBAAoB,SAASD,CAAQ;AAAA,MAC/C,CAAC,GACDF,EAAe,MAAA;AAAA,IACjB;AAGA,aAASI,IAA2B;AAClC,UAAI,CAACP,EAAoB,MAAO;AAGhC,MAAAI,EAAA,GAEkBJ,EAAoB,MAAM,iBAAiB,kBAAkB,EAErE,QAAQ,CAACQ,MAAS;AAC1B,cAAMC,IAAWD,EAAK,aAAa,gBAAgB;AACnD,YAAI,CAACC,EAAU;AAGf,cAAMC,IAAWhB,EAAiB,UAAUe;AAC5C,QAAAD,EAAK,aAAa,iBAAiBE,IAAW,SAAS,OAAO;AAG9D,cAAML,IAAW,MAAM;AAErB,cAAIH,EAAiB,OAAO;AAC1B,kBAAMS,IAAcT,EAAiB,MAAM;AAAA,cACzC,gCAAgCO,CAAQ;AAAA,YAAA,GAEpCG,IAAaD,KAAA,gBAAAA,EAAa;AAChC,YAAIC,KAAcA,aAAsB,eACtCA,EAAW,MAAA;AAAA,UAEf;AAAA,QACF;AAEA,QAAAJ,EAAK,iBAAiB,SAASH,CAAQ,GACvCF,EAAe,IAAIK,GAAMH,CAAQ;AAAA,MACnC,CAAC;AAAA,IACH;AAEA,WAAAQ,EAAU,MAAM;AACd,MAAAN,EAAA;AAAA,IACF,CAAC,GAEDO,EAAU,MAAM;AACd,MAAAP,EAAA;AAAA,IACF,CAAC,GAEDQ,EAAMrB,GAAkB,MAAM;AAC5B,MAAAa,EAAA;AAAA,IACF,CAAC,GAEDS,EAAgB,MAAM;AACpB,MAAAZ,EAAA;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/TextEditor.js
CHANGED
|
@@ -6,7 +6,7 @@ import { isEqual as _r, cloneDeep as He, merge as he } from "lodash-es";
|
|
|
6
6
|
import { c as ae, g as Si } from "./_commonjsHelpers-DaMA6jEr.js";
|
|
7
7
|
import yl from "lodash-es/uniqueId";
|
|
8
8
|
import Zr from "./Button.js";
|
|
9
|
-
import { _ as vl } from "./Field.vue_vue_type_script_setup_true_lang-
|
|
9
|
+
import { _ as vl } from "./Field.vue_vue_type_script_setup_true_lang-dAGKfjf5.js";
|
|
10
10
|
import Wr from "./Icon.js";
|
|
11
11
|
import { _ as El } from "./_plugin-vue_export-helper-CHgC5LLL.js";
|
|
12
12
|
var D = /* @__PURE__ */ ((i) => (i[i.TYPE = 3] = "TYPE", i[i.LEVEL = 12] = "LEVEL", i[i.ATTRIBUTE = 13] = "ATTRIBUTE", i[i.BLOT = 14] = "BLOT", i[i.INLINE = 7] = "INLINE", i[i.BLOCK = 11] = "BLOCK", i[i.BLOCK_BLOT = 10] = "BLOCK_BLOT", i[i.INLINE_BLOT = 6] = "INLINE_BLOT", i[i.BLOCK_ATTRIBUTE = 9] = "BLOCK_ATTRIBUTE", i[i.INLINE_ATTRIBUTE = 5] = "INLINE_ATTRIBUTE", i[i.ANY = 15] = "ANY", i))(D || {});
|
|
@@ -6808,7 +6808,7 @@ const Ga = [
|
|
|
6808
6808
|
e.isReadOnly ? sr("", !0) : (Kt(), fs("div", {
|
|
6809
6809
|
key: 0,
|
|
6810
6810
|
id: `${c.value}-format-bar`,
|
|
6811
|
-
class: ds(["stash-text-editor__format-bar", [Be(n)["format-bar-root"], { "!
|
|
6811
|
+
class: ds(["stash-text-editor__format-bar", [Be(n)["format-bar-root"], { "!border-x-red-500 !border-t-red-500": !!e.errorText }]]),
|
|
6812
6812
|
"data-test": "stash-text-editor|format-bar",
|
|
6813
6813
|
role: "format-bar"
|
|
6814
6814
|
}, [
|
|
@@ -6820,7 +6820,7 @@ const Ga = [
|
|
|
6820
6820
|
}, [
|
|
6821
6821
|
(Kt(!0), fs(nr, null, Gr(q, ($, H) => (Kt(), hs(Zr, {
|
|
6822
6822
|
key: $.name + H,
|
|
6823
|
-
class: ds(["stash-text-editor__format-bar__control
|
|
6823
|
+
class: ds(["stash-text-editor__format-bar__control", [Be(n)["format-bar-control"], `ql-${$.name}`]]),
|
|
6824
6824
|
"aria-label": $.value ? `${$.name}: ${$.value}` : `${$.name}`,
|
|
6825
6825
|
"data-test": `stash-text-editor|format-bar-${$.name}-grouped-control`,
|
|
6826
6826
|
disabled: e.isDisabled,
|
|
@@ -6863,17 +6863,17 @@ const Ga = [
|
|
|
6863
6863
|
ref_key: "editorRef",
|
|
6864
6864
|
ref: l,
|
|
6865
6865
|
"data-test": "stash-text-editor|editor",
|
|
6866
|
-
class: ds(["stash-text-editor__content-container
|
|
6866
|
+
class: ds(["stash-text-editor__content-container", [Be(n)["content-container"]]])
|
|
6867
6867
|
}, null, 10, Ya)
|
|
6868
6868
|
]),
|
|
6869
6869
|
_: 1
|
|
6870
6870
|
}, 16, ["class"]));
|
|
6871
6871
|
}
|
|
6872
|
-
}), Ja = "
|
|
6872
|
+
}), Ja = "_root_1ivwb_5", tc = {
|
|
6873
6873
|
root: Ja,
|
|
6874
|
-
"format-bar-root": "_format-bar-
|
|
6875
|
-
"format-bar-group": "_format-bar-
|
|
6876
|
-
"format-bar-control": "_format-bar-
|
|
6874
|
+
"format-bar-root": "_format-bar-root_1ivwb_48",
|
|
6875
|
+
"format-bar-group": "_format-bar-group_1ivwb_58",
|
|
6876
|
+
"format-bar-control": "_format-bar-control_1ivwb_82"
|
|
6877
6877
|
}, ec = {
|
|
6878
6878
|
$style: tc
|
|
6879
6879
|
}, mc = /* @__PURE__ */ El(Qa, [["__cssModules", ec]]);
|