@leaflink/stash 44.0.0-beta.1 → 44.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -39
- package/dist/ActionsDropdown.js +25 -25
- package/dist/ActionsDropdown.js.map +1 -1
- package/dist/AddressSelect.js +12 -11
- package/dist/AddressSelect.js.map +1 -1
- package/dist/Alert.js +9 -9
- package/dist/Alert.js.map +1 -1
- package/dist/AppNavigationItem.js +22 -22
- package/dist/AppNavigationItem.js.map +1 -1
- package/dist/AppSidebar.js +11 -11
- package/dist/AppSidebar.js.map +1 -1
- package/dist/AppTopbar.js +12 -12
- package/dist/Avatar.js +12 -12
- package/dist/Avatar.js.map +1 -1
- package/dist/Backdrop.js +1 -1
- package/dist/Backdrop.js.map +1 -1
- package/dist/Badge.js +12 -12
- package/dist/Badge.js.map +1 -1
- package/dist/Badge.vue.d.ts +1 -1
- package/dist/Button.js +1 -1
- package/dist/Button.js.map +1 -1
- package/dist/Button.vue_used_vue_type_style_index_0_lang.module-63d31dc0.js +17 -0
- package/dist/Button.vue_used_vue_type_style_index_0_lang.module-63d31dc0.js.map +1 -0
- package/dist/ButtonGroup.js +28 -28
- package/dist/ButtonGroup.js.map +1 -1
- package/dist/Card.js +3 -3
- package/dist/Card.js.map +1 -1
- package/dist/CardHeader.js +3 -3
- package/dist/CardMedia.js +1 -1
- package/dist/CardMedia.js.map +1 -1
- package/dist/Carousel.js +260 -248
- package/dist/Carousel.js.map +1 -1
- package/dist/Checkbox.js +58 -46
- package/dist/Checkbox.js.map +1 -1
- package/dist/Checkbox.vue.d.ts +2 -0
- package/dist/Checkbox.vue_used_vue_type_style_index_0_lang.module-fa8d9c06.js +9 -0
- package/dist/Checkbox.vue_used_vue_type_style_index_0_lang.module-fa8d9c06.js.map +1 -0
- package/dist/ChevronToggle.js +1 -1
- package/dist/Chip.js +1 -1
- package/dist/Chip.js.map +1 -1
- package/dist/ConfirmationCodeInput.js +21 -21
- package/dist/ConfirmationCodeInput.js.map +1 -1
- package/dist/ContextSwitcher.js +6 -5
- package/dist/ContextSwitcher.js.map +1 -1
- package/dist/Copy.js +1 -1
- package/dist/CurrencyInput.js +2 -2
- package/dist/DataView.js +1 -1
- package/dist/DataViewFilters.js +7 -7
- package/dist/DataViewFilters.js.map +1 -1
- package/dist/DataViewSortButton.js +47 -38
- package/dist/DataViewSortButton.js.map +1 -1
- package/dist/DataViewToolbar.js +4 -4
- package/dist/DataViewToolbar.js.map +1 -1
- package/dist/DatePicker.js +12 -15
- package/dist/DatePicker.js.map +1 -1
- package/dist/DescriptionListTerm.js +8 -8
- package/dist/DescriptionListTerm.js.map +1 -1
- package/dist/Dialog.js +46 -46
- package/dist/Dialog.js.map +1 -1
- package/dist/Divider.js +9 -9
- package/dist/Divider.js.map +1 -1
- package/dist/Dropdown.js +17 -17
- package/dist/Dropdown.js.map +1 -1
- package/dist/EmptyState.js +1 -1
- package/dist/EmptyState.js.map +1 -1
- package/dist/Expand.js +1 -1
- package/dist/{Expand.vue_vue_type_script_setup_true_lang-5fe03d51.js → Expand.vue_vue_type_script_setup_true_lang-1751f4a6.js} +14 -15
- package/dist/Expand.vue_vue_type_script_setup_true_lang-1751f4a6.js.map +1 -0
- package/dist/Field.js +2 -2
- package/dist/Field.vue.d.ts +1 -1
- package/dist/{Field.vue_vue_type_script_setup_true_lang-475832fe.js → Field.vue_vue_type_script_setup_true_lang-42ba3c5a.js} +5 -5
- package/dist/Field.vue_vue_type_script_setup_true_lang-42ba3c5a.js.map +1 -0
- package/dist/FileUpload.js +49 -47
- package/dist/FileUpload.js.map +1 -1
- package/dist/FilterChip.js +20 -20
- package/dist/FilterChip.js.map +1 -1
- package/dist/FilterDrawerItem.js +4 -4
- package/dist/FilterDrawerItem.js.map +1 -1
- package/dist/FilterDropdown.js +19 -19
- package/dist/FilterDropdown.js.map +1 -1
- package/dist/FilterSelect.js +27 -27
- package/dist/FilterSelect.js.map +1 -1
- package/dist/Filters.js +51 -50
- package/dist/Filters.js.map +1 -1
- package/dist/HttpError.js +28 -28
- package/dist/HttpError.js.map +1 -1
- package/dist/IconLabel.js +17 -17
- package/dist/IconLabel.js.map +1 -1
- package/dist/IconLabel.vue.d.ts +1 -1
- package/dist/Illustration.js +10 -60
- package/dist/Illustration.js.map +1 -1
- package/dist/Illustration.vue_vue_type_script_setup_true_lang-d6a94e17.js +56 -0
- package/dist/Illustration.vue_vue_type_script_setup_true_lang-d6a94e17.js.map +1 -0
- package/dist/Image.js +67 -72
- package/dist/Image.js.map +1 -1
- package/dist/InlineEdit.js +3 -3
- package/dist/InlineEdit.js.map +1 -1
- package/dist/Input.js +43 -43
- package/dist/Input.js.map +1 -1
- package/dist/InputOptions.js +34 -33
- package/dist/InputOptions.js.map +1 -1
- package/dist/Label.js +1 -1
- package/dist/Label.vue.d.ts +13 -2
- package/dist/Label.vue_vue_type_script_setup_true_lang-4b02087f.js +38 -0
- package/dist/Label.vue_vue_type_script_setup_true_lang-4b02087f.js.map +1 -0
- package/dist/ListItem.js +16 -15
- package/dist/ListItem.js.map +1 -1
- package/dist/ListItemCell.js +9 -9
- package/dist/ListItemCell.js.map +1 -1
- package/dist/ListView.js +143 -139
- package/dist/ListView.js.map +1 -1
- package/dist/Loading.js +17 -10
- package/dist/Loading.js.map +1 -1
- package/dist/Loading.vue_used_vue_type_style_index_0_lang.module-ef5a3bc6.js +8 -0
- package/dist/Loading.vue_used_vue_type_style_index_0_lang.module-ef5a3bc6.js.map +1 -0
- package/dist/Menu.js +1 -1
- package/dist/Menu.js.map +1 -1
- package/dist/MenuItem.js +20 -14
- package/dist/MenuItem.js.map +1 -1
- package/dist/Metric.js +4 -4
- package/dist/Metric.js.map +1 -1
- package/dist/Modal.js +21 -21
- package/dist/Modal.js.map +1 -1
- package/dist/Modals.js +13 -13
- package/dist/Modals.js.map +1 -1
- package/dist/Module.js +2 -2
- package/dist/Module.js.map +1 -1
- package/dist/ModuleContent.js +2 -2
- package/dist/ModuleContent.js.map +1 -1
- package/dist/ModuleFooter.js +11 -11
- package/dist/ModuleFooter.js.map +1 -1
- package/dist/ModuleHeader.js +6 -6
- package/dist/ModuleHeader.js.map +1 -1
- package/dist/ObfuscateText.js +30 -32
- package/dist/ObfuscateText.js.map +1 -1
- package/dist/ObfuscateText.vue.d.ts +1 -1
- package/dist/PageContent.js +9 -9
- package/dist/PageContent.js.map +1 -1
- package/dist/PageHeader.js +24 -24
- package/dist/PageHeader.js.map +1 -1
- package/dist/PageNavigation.js +3 -3
- package/dist/PageNavigation.js.map +1 -1
- package/dist/Paginate.js +1 -1
- package/dist/Paginate.js.map +1 -1
- package/dist/Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js +11 -0
- package/dist/Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js.map +1 -0
- package/dist/QuickAction.js +20 -17
- package/dist/QuickAction.js.map +1 -1
- package/dist/Radio.js +30 -15
- package/dist/Radio.js.map +1 -1
- package/dist/RadioGroup.js +177 -148
- package/dist/RadioGroup.js.map +1 -1
- package/dist/RadioNew.js +118 -91
- package/dist/RadioNew.js.map +1 -1
- package/dist/SearchBar.js +27 -27
- package/dist/SearchBar.js.map +1 -1
- package/dist/Select.js +189 -188
- package/dist/Select.js.map +1 -1
- package/dist/SelectStatus.js +22 -21
- package/dist/SelectStatus.js.map +1 -1
- package/dist/Step.js +37 -37
- package/dist/Step.js.map +1 -1
- package/dist/Switch.js +44 -36
- package/dist/Switch.js.map +1 -1
- package/dist/Tab.js +3 -2
- package/dist/Tab.js.map +1 -1
- package/dist/{Tab.vue_vue_type_script_setup_true_lang-b810bee8.js → Tab.vue_vue_type_script_setup_true_lang-69d1b046.js} +23 -22
- package/dist/Tab.vue_vue_type_script_setup_true_lang-69d1b046.js.map +1 -0
- package/dist/Table.js +23 -22
- package/dist/Table.js.map +1 -1
- package/dist/Table.keys-cf93df19.js +27 -0
- package/dist/{Table.keys-1ebe4ecb.js.map → Table.keys-cf93df19.js.map} +1 -1
- package/dist/TableCell.js +24 -23
- package/dist/TableCell.js.map +1 -1
- package/dist/TableHeaderCell.js +37 -36
- package/dist/TableHeaderCell.js.map +1 -1
- package/dist/TableHeaderRow.js +13 -12
- package/dist/TableHeaderRow.js.map +1 -1
- package/dist/TableRow.js +36 -34
- package/dist/TableRow.js.map +1 -1
- package/dist/Tabs.js +2 -2
- package/dist/{Tabs.vue_used_vue_type_style_index_0_lang.module-4f247ed7.js → Tabs.vue_used_vue_type_style_index_0_lang.module-2a131332.js} +26 -26
- package/dist/Tabs.vue_used_vue_type_style_index_0_lang.module-2a131332.js.map +1 -0
- package/dist/Textarea.js +61 -53
- package/dist/Textarea.js.map +1 -1
- package/dist/Toast.js +23 -23
- package/dist/Toast.js.map +1 -1
- package/dist/components.css +1 -1
- package/dist/constants.d.ts +33 -26
- package/dist/constants.js +56 -41
- package/dist/constants.js.map +1 -1
- package/dist/index.js +21 -20
- package/dist/index.js.map +1 -1
- package/dist/storage.js +3 -2
- package/dist/storage.js.map +1 -1
- package/dist/tailwind-base.d.ts +16 -16
- package/dist/tailwind-base.js +16 -6
- package/dist/tailwind-base.js.map +1 -1
- package/dist/useGoogleMaps.js.map +1 -1
- package/dist/utils/helpers.js +37 -37
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/storage.js +30 -29
- package/dist/utils/storage.js.map +1 -1
- package/package.json +2 -2
- package/styles/_core.scss +1 -1
- package/styles/backwards-compat.css +61 -105
- package/styles/base.css +259 -113
- package/tailwind-base.ts +6 -1
- package/dist/Button.vue_used_vue_type_style_index_0_lang.module-b77978d6.js +0 -17
- package/dist/Button.vue_used_vue_type_style_index_0_lang.module-b77978d6.js.map +0 -1
- package/dist/Checkbox.vue_vue_type_style_index_0_scoped_0d7e7fd0_lang-4ed993c7.js +0 -2
- package/dist/Checkbox.vue_vue_type_style_index_0_scoped_0d7e7fd0_lang-4ed993c7.js.map +0 -1
- package/dist/Expand.vue_vue_type_script_setup_true_lang-5fe03d51.js.map +0 -1
- package/dist/Field.vue_vue_type_script_setup_true_lang-475832fe.js.map +0 -1
- package/dist/Label.vue_vue_type_script_setup_true_lang-1d29d98a.js +0 -37
- package/dist/Label.vue_vue_type_script_setup_true_lang-1d29d98a.js.map +0 -1
- package/dist/Loading.vue_vue_type_style_index_0_scoped_bb8d5f15_lang-4ed993c7.js +0 -2
- package/dist/Loading.vue_vue_type_style_index_0_scoped_bb8d5f15_lang-4ed993c7.js.map +0 -1
- package/dist/Paginate.vue_used_vue_type_style_index_0_lang.module-bfccf992.js +0 -11
- package/dist/Paginate.vue_used_vue_type_style_index_0_lang.module-bfccf992.js.map +0 -1
- package/dist/Tab.vue_vue_type_script_setup_true_lang-b810bee8.js.map +0 -1
- package/dist/Table.keys-1ebe4ecb.js +0 -27
- package/dist/Tabs.vue_used_vue_type_style_index_0_lang.module-4f247ed7.js.map +0 -1
- package/styles/_base.scss +0 -493
- package/styles/elements/_links.scss +0 -32
- package/styles/elements/_lists.scss +0 -31
- package/styles/elements/_misc.scss +0 -16
- package/styles/main.scss +0 -38
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tab.vue_vue_type_script_setup_true_lang-69d1b046.js","sources":["../src/components/Tab/Tab.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import logger from '@leaflink/snitch';\n import { computed, inject, nextTick, onMounted, toRefs } from 'vue';\n import { type RouteLocationRaw, type RouterLinkProps } from 'vue-router';\n\n import Badge from '../Badge/Badge.vue';\n import { TABS_INJECTION } from '../Tabs/Tabs.vue';\n\n /**\n * Allowed attributes for the `<a>` element when the `href` prop is used.\n */\n type AnchorAttrs = HTMLAnchorElement['download'] | HTMLAnchorElement['hreflang'] | HTMLAnchorElement['ping'] | HTMLAnchorElement['referrerPolicy'] | HTMLAnchorElement['rel'] | HTMLAnchorElement['target'] | HTMLAnchorElement['type'];\n\n export interface TabProps {\n /**\n * The tab identifier\n */\n value: string;\n\n /**\n * Router link `to` prop\n */\n to?: RouteLocationRaw;\n\n /**\n * Anchor tag href. Used for navigating to non-vue pages, such as Django pages in marketplace.\n */\n href?: string;\n\n /**\n * The badge's content\n */\n badge?: string | number;\n\n /**\n * Will render a plain text item if true.\n */\n disabled?: boolean\n\n /**\n * Props for the `<a>` element when the `href` prop is used\n */\n anchorProps?: Record<AnchorAttrs, string>;\n\n /**\n * Props for the `<RouterLink>` element when the `to` prop is used\n */\n routerLinkProps?: Omit<RouterLinkProps, 'to'>;\n }\n\n const props = defineProps<TabProps>();\n\n const tabsInjection = inject(TABS_INJECTION.key);\n\n if (!tabsInjection) {\n throw Error('The Tab component must be a child of the Tabs component.');\n }\n\n const { setActiveTab, activeTab, variant } = tabsInjection;\n\n const isTabActive = computed(() => {\n return props.value === activeTab.value;\n });\n\n const is = computed(() => {\n if (props.to) {\n return 'router-link';\n }\n\n if (props.href) {\n return 'a';\n }\n\n return 'button';\n });\n\n /**\n * Note: this click handler gets ignored when the `href` prop is used; `preventDefault()` is intentionally omitted in order to enable the `href` prop to work correctly. The `href` prop is used for navigation to non-vue pages, such as Django pages in marketplace.\n */\n function onClick(tabValue: string) {\n if (props.disabled) {\n return;\n }\n\n setActiveTab(tabValue);\n }\n\n const panelId = computed(() => `tabpanel-${props.value}`);\n\n onMounted(async () => {\n await nextTick();\n\n if (process.env.NODE_ENV !== 'test' && isTabActive.value && !document.getElementById(panelId.value)) {\n // The following warning ensures optimal accessibility is maintained when using the Tabs component. See: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/tab_role#example\n logger.warn(`The <Tab> with value \"${props.value}\" is active, but its corresponding tab panel cannot be found. Please ensure that the corresponding tab panel has an \"id\" attribute with value \"${panelId.value}\" and a \"role\" attribute with value \"tabpanel\".`);\n }\n });\n\n const dynamicComponentAttrs = computed(() => {\n if (props.to && props.routerLinkProps) {\n return toRefs(props.routerLinkProps);\n }\n\n if (props.href && props.anchorProps) {\n return toRefs(props.anchorProps);\n }\n\n return {};\n });\n</script>\n\n<template>\n <li\n :id=\"`tab-${props.value}`\"\n role=\"tab\"\n :aria-selected=\"isTabActive\"\n :aria-controls=\"panelId\"\n :aria-disabled=\"props.disabled\"\n class=\"stash-tab\"\n :class=\"[\n {\n 'stash-tab--active is-active': isTabActive,\n 'stash-tab--disabled': props.disabled,\n 'stash-tab--variant-line': variant === 'line',\n 'stash-tab--variant-enclosed': variant === 'enclosed',\n },\n ]\"\n @click=\"onClick(props.value)\"\n @keypress.enter=\"onClick(props.value)\"\n >\n <component\n v-bind=\"dynamicComponentAttrs\"\n :is=\"is\"\n :to=\"props.to\"\n :href=\"props.href\"\n class=\"\n tw-flex\n tw-cursor-pointer\n tw-items-center\n tw-justify-center\n tw-whitespace-nowrap\n tw-border-solid\n tw-py-1.5\n tw-text-sm\n tw-font-medium\n hover:tw-no-underline\n \"\n :class=\"[\n {\n 'tw-border-b-2': variant === 'line',\n 'tw-border-t-4 tw-px-6': variant === 'enclosed',\n 'tw-rounded-t tw-bg-white': isTabActive && variant === 'enclosed',\n 'focus:tw-no-underline': props.href,\n 'tw-pointer-events-none tw-text-ice-500': props.disabled,\n 'tw-text-ice-700': !props.disabled && !isTabActive,\n },\n [\n isTabActive\n ? 'tw-border-blue-500 tw-text-blue-500'\n : 'tw-border-transparent hover:tw-text-blue-500 focus:tw-text-blue-500',\n ],\n ]\"\n :tabindex=\"props.disabled ? -1 : 0\"\n >\n <!-- The margin-top on the <div> below is necessary to fix the vertical alignment of text in the default slot since our Sofia font has extra space under the baseline -->\n <div class=\"tw-mt-0.5\">\n <Badge :content=\"props.badge\" position=\"inline\" color=\"red\" :is-disabled=\"props.disabled\">\n <slot :is-active=\"isTabActive\" :is-disabled=\"props.disabled\" :variant=\"variant\"></slot>\n </Badge>\n </div>\n </component>\n </li>\n</template>\n"],"names":["tabsInjection","inject","TABS_INJECTION","setActiveTab","activeTab","variant","isTabActive","computed","props","is","onClick","tabValue","panelId","onMounted","nextTick","logger","dynamicComponentAttrs","toRefs"],"mappings":";;;;;;;;;;;;;;;;iBAoDQA,IAAgBC,EAAOC,EAAe,GAAG;AAE/C,QAAI,CAACF;AACH,YAAM,MAAM,0DAA0D;AAGxE,UAAM,EAAE,cAAAG,GAAc,WAAAC,GAAW,SAAAC,EAAA,IAAYL,GAEvCM,IAAcC,EAAS,MACpBC,EAAM,UAAUJ,EAAU,KAClC,GAEKK,IAAKF,EAAS,MACdC,EAAM,KACD,gBAGLA,EAAM,OACD,MAGF,QACR;AAKD,aAASE,EAAQC,GAAkB;AACjC,MAAIH,EAAM,YAIVL,EAAaQ,CAAQ;AAAA,IACvB;AAEA,UAAMC,IAAUL,EAAS,MAAM,YAAYC,EAAM,KAAK,EAAE;AAExD,IAAAK,EAAU,YAAY;AACpB,YAAMC,EAAS,GAEX,QAAQ,IAAI,aAAa,UAAUR,EAAY,SAAS,CAAC,SAAS,eAAeM,EAAQ,KAAK,KAEhGG,EAAO,KAAK,yBAAyBP,EAAM,KAAK,kJAAkJI,EAAQ,KAAK,iDAAiD;AAAA,IAClQ,CACD;AAEK,UAAAI,IAAwBT,EAAS,MACjCC,EAAM,MAAMA,EAAM,kBACbS,EAAOT,EAAM,eAAe,IAGjCA,EAAM,QAAQA,EAAM,cACfS,EAAOT,EAAM,WAAW,IAG1B,EACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/Table.js
CHANGED
|
@@ -1,31 +1,32 @@
|
|
|
1
|
-
import { defineComponent as T, inject as y, computed as a, provide as B, openBlock as w, createElementBlock as C, normalizeClass as b, unref as n, normalizeStyle as L, createElementVNode as
|
|
1
|
+
import { defineComponent as T, inject as y, computed as a, provide as B, openBlock as w, createElementBlock as C, normalizeClass as b, unref as n, normalizeStyle as L, createElementVNode as m, renderSlot as u, createBlock as H, withCtx as i, createVNode as l } from "vue";
|
|
2
2
|
import "lodash-es/cloneDeep";
|
|
3
3
|
import { M as v } from "./Module.keys-2cc7d830.js";
|
|
4
4
|
import "lodash-es/uniqueId";
|
|
5
5
|
import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
|
|
6
|
-
import "./Paginate.vue_used_vue_type_style_index_0_lang.module-
|
|
6
|
+
import "./Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js";
|
|
7
7
|
import { D as g } from "./DataView.vue_used_vue_type_style_index_0_lang.module-d878ca9a.js";
|
|
8
8
|
import N from "./EmptyState.js";
|
|
9
9
|
import D from "./Loading.js";
|
|
10
10
|
import h from "./TableCell.js";
|
|
11
11
|
import E from "./TableRow.js";
|
|
12
|
-
import { T as I } from "./Table.keys-
|
|
12
|
+
import { T as I } from "./Table.keys-cf93df19.js";
|
|
13
13
|
import { S as V } from "./misc-d0eec261.js";
|
|
14
14
|
import "./locale.js";
|
|
15
15
|
import "lodash-es/get";
|
|
16
16
|
import "./EmptyState.vue_used_vue_type_style_index_0_lang.module-f5d89366.js";
|
|
17
17
|
import "./_plugin-vue_export-helper-dad06003.js";
|
|
18
|
-
import "./Loading.
|
|
19
|
-
import "
|
|
20
|
-
import "./
|
|
18
|
+
import "./Loading.vue_used_vue_type_style_index_0_lang.module-ef5a3bc6.js";
|
|
19
|
+
import "@leaflink/snitch";
|
|
20
|
+
import "./Checkbox.vue_used_vue_type_style_index_0_lang.module-fa8d9c06.js";
|
|
21
|
+
import "./Button.vue_used_vue_type_style_index_0_lang.module-63d31dc0.js";
|
|
21
22
|
import "./Checkbox.js";
|
|
22
23
|
import "./ChevronToggle.vue_vue_type_script_setup_true_lang-1591294c.js";
|
|
23
24
|
import "./Button.js";
|
|
24
25
|
import "./Icon.js";
|
|
25
26
|
import "./index-79ce320f.js";
|
|
26
|
-
import "./Expand.vue_vue_type_script_setup_true_lang-
|
|
27
|
+
import "./Expand.vue_vue_type_script_setup_true_lang-1751f4a6.js";
|
|
27
28
|
var A = /* @__PURE__ */ ((e) => (e.Scroll = "scroll", e.Stack = "stack", e))(A || {}), O = /* @__PURE__ */ ((e) => (e.None = "none", e.Rounded = "rounded", e.RoundedBottom = "rounded-bottom", e))(O || {});
|
|
28
|
-
const J = { class: "tw-relative tw-
|
|
29
|
+
const J = { class: "tw-relative tw-min-w-full tw-max-w-initial tw-border-separate" }, ut = /* @__PURE__ */ T({
|
|
29
30
|
__name: "Table",
|
|
30
31
|
props: {
|
|
31
32
|
density: { default: void 0 },
|
|
@@ -46,7 +47,7 @@ const J = { class: "tw-relative tw-border-separate tw-max-w-initial tw-min-w-ful
|
|
|
46
47
|
variant: p,
|
|
47
48
|
isLoading: x,
|
|
48
49
|
isEmpty: S
|
|
49
|
-
} = y(g.key, g.defaults), { variant:
|
|
50
|
+
} = y(g.key, g.defaults), { variant: s } = y(v.key, v.defaults), c = a(() => (s == null ? void 0 : s.value) === "table" || p.value === "table" ? "rounded-bottom" : t.radius), r = a(() => t.stickyHeader ? "scroll" : t.layout), f = a(() => {
|
|
50
51
|
var o, d;
|
|
51
52
|
return !!((o = t.stickyHeader) != null && o.maxHeight && // table can't scroll without a max height; sticky headers only needed for a scrollable table
|
|
52
53
|
((d = t.stickyHeader) == null ? void 0 : d.listLength) > 3);
|
|
@@ -68,40 +69,40 @@ const J = { class: "tw-relative tw-border-separate tw-max-w-initial tw-min-w-ful
|
|
|
68
69
|
{ "tw-rounded": c.value === "rounded" },
|
|
69
70
|
{ "tw-rounded-b": c.value === "rounded-bottom" },
|
|
70
71
|
{ "tw-border-t tw-border-ice-200": n(p) === "table" },
|
|
71
|
-
{ "tw-
|
|
72
|
-
{ "
|
|
72
|
+
{ "tw-overflow-auto tw-shadow": r.value === "scroll" },
|
|
73
|
+
{ "tw-overflow-visble lg:tw-overflow-auto lg:tw-shadow": r.value === "stack" },
|
|
73
74
|
{ "tw-min-h-[300px]": f.value && !t.isLoading }
|
|
74
75
|
// prevent the table from collapsing on small screen heights when the max-height is dynamic
|
|
75
76
|
]]),
|
|
76
77
|
"data-test": "stash-table",
|
|
77
78
|
style: L(_.value)
|
|
78
79
|
}, [
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
m("table", J, [
|
|
81
|
+
m("thead", {
|
|
81
82
|
class: b(["tw-border-b tw-border-ice-200", {
|
|
82
83
|
"tw-hidden lg:tw-table-header-group": r.value === "stack"
|
|
83
84
|
}])
|
|
84
85
|
}, [
|
|
85
|
-
|
|
86
|
+
u(o.$slots, "head")
|
|
86
87
|
], 2),
|
|
87
|
-
|
|
88
|
+
m("tbody", null, [
|
|
88
89
|
t.isLoading || n(x) ? (w(), H(E, { key: 0 }, {
|
|
89
|
-
default:
|
|
90
|
+
default: i(() => [
|
|
90
91
|
l(h, { colspan: "100%" }, {
|
|
91
|
-
default:
|
|
92
|
+
default: i(() => [
|
|
92
93
|
l(D)
|
|
93
94
|
]),
|
|
94
95
|
_: 1
|
|
95
96
|
})
|
|
96
97
|
]),
|
|
97
98
|
_: 1
|
|
98
|
-
})) : t.isEmpty || n(S) ?
|
|
99
|
+
})) : t.isEmpty || n(S) ? u(o.$slots, "empty", { key: 1 }, () => [
|
|
99
100
|
l(E, null, {
|
|
100
|
-
default:
|
|
101
|
+
default: i(() => [
|
|
101
102
|
l(h, { colspan: "100%" }, {
|
|
102
|
-
default:
|
|
103
|
+
default: i(() => [
|
|
103
104
|
l(N, {
|
|
104
|
-
class: "tw-
|
|
105
|
+
class: "tw-w-full tw-bg-white",
|
|
105
106
|
text: t.emptyStateText
|
|
106
107
|
}, null, 8, ["text"])
|
|
107
108
|
]),
|
|
@@ -110,7 +111,7 @@ const J = { class: "tw-relative tw-border-separate tw-max-w-initial tw-min-w-ful
|
|
|
110
111
|
]),
|
|
111
112
|
_: 1
|
|
112
113
|
})
|
|
113
|
-
]) :
|
|
114
|
+
]) : u(o.$slots, "body", { key: 2 })
|
|
114
115
|
])
|
|
115
116
|
])
|
|
116
117
|
], 6));
|
package/dist/Table.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","sources":["../src/components/Table/Table.types.ts","../src/components/Table/Table.vue"],"sourcesContent":["import { ComputedRef } from 'vue';\n\nimport { SpacingDensities } from '../../../types/misc';\n\nexport enum Layout {\n Scroll = 'scroll',\n Stack = 'stack',\n}\n\nexport type Layouts = `${Layout}`;\n\nexport enum TableRadius {\n None = 'none',\n Rounded = 'rounded',\n RoundedBottom = 'rounded-bottom',\n}\n\nexport type TableRadiuses = `${TableRadius}`;\n\n/**\n * Properties and utilities provided to children of a Table instance\n */\nexport interface TableInjection {\n /**\n * Controls the Table's padding; the default value is \"comfortable\". On small screens, the density will always be \"compact\".\n */\n density: ComputedRef<SpacingDensities>;\n\n /**\n * Styles the last column for \"row actions\"\n */\n hasActions: ComputedRef<boolean>;\n\n /**\n * If true, hides the default expansion toggle column\n */\n hasCustomExpandToggle: ComputedRef<boolean>;\n\n /**\n * Adds a toggle column for row expansion. This is primarily needed for ensuring the corresponding empty TableHeaderRow is included.\n */\n isExpandable: ComputedRef<boolean>;\n\n /**\n * Adds a checkbox column for selecting rows; intended for use with the `useSelection` composable.\n */\n isSelectable: ComputedRef<boolean>;\n\n /**\n * Sets the table layout; the default value is \"scroll\".\n */\n layout: ComputedRef<Layouts>;\n}\n","<script lang=\"ts\">\n import { SpacingDensities, SpacingDensity } from '../../../types/misc';\n import { MODULE_INJECTION } from '../Module/Module.keys';\n import { Layouts, TableRadiuses } from './Table.types';\n\n export * from './Table.keys';\n export * from './Table.types';\n\n export interface TableProps {\n /**\n * Controls the Table's padding; the default value is \"comfortable\". On small screens, \"compact\" density is applied regardless of this prop's value.\n */\n density?: SpacingDensities;\n\n /**\n * Sets the text for the empty state; the default value is \"No Results\".\n */\n emptyStateText?: string;\n\n /**\n * Styles the last column for \"row actions\"\n */\n hasActions?: boolean;\n\n /**\n * If true, hides the default expansion toggle column\n */\n hasCustomExpandToggle?: boolean;\n\n /**\n * Shows the empty state\n */\n isEmpty?: boolean;\n\n /**\n * Shows the loading state\n */\n isLoading?: boolean;\n\n /**\n * Adds a toggle column for row expansion. This is primarily needed for ensuring the corresponding empty TableHeaderRow is included.\n */\n isExpandable?: boolean;\n\n /**\n * Adds a checkbox column for selecting rows; intended for use with the `useSelection` composable.\n */\n isSelectable?: boolean;\n\n /**\n * Sets the table layout; the default value is \"scroll\".\n */\n layout?: Layouts;\n\n /**\n * Controls the corners of the table with the \"border-radius\" CSS property. The default value is \"rounded\".\n */\n radius?: TableRadiuses;\n\n /**\n * Allows the table head to be sticky when scrolling inside the table body\n */\n stickyHeader?: {\n listLength: number;\n maxHeight: string;\n };\n }\n</script>\n\n<script setup lang=\"ts\">\n import { computed, inject, provide } from 'vue';\n\n import { DATA_VIEW_INJECTION } from '../DataView/DataView.vue';\n import EmptyState from '../EmptyState/EmptyState.vue';\n import Loading from '../Loading/Loading.vue';\n import TableCell from '../TableCell/TableCell.vue';\n import TableRow from '../TableRow/TableRow.vue';\n import { TABLE_INJECTION } from './Table.keys';\n\n const props = withDefaults(defineProps<TableProps>(), {\n density: undefined,\n emptyStateText: '',\n hasActions: false,\n hasCustomExpandToggle: false,\n isEmpty: false,\n isLoading: false,\n isExpandable: false,\n isSelectable: false,\n layout: 'scroll',\n radius: 'rounded',\n stickyHeader: undefined,\n });\n\n const {\n density: dataViewDensity,\n variant: dataViewVariant,\n isLoading: isDataViewLoading,\n isEmpty: isDataViewEmpty,\n } = inject(DATA_VIEW_INJECTION.key, DATA_VIEW_INJECTION.defaults);\n\n const { variant: moduleVariant } = inject(MODULE_INJECTION.key, MODULE_INJECTION.defaults);\n\n const computedRadius = computed<TableRadiuses>(() => {\n // Will work for tables when rendered inside of a Module with OR without a DataView.\n if (moduleVariant?.value === 'table') {\n return 'rounded-bottom';\n }\n\n if (dataViewVariant.value === 'table') {\n return 'rounded-bottom';\n }\n\n return props.radius;\n });\n\n const computedLayout = computed<Layouts>(() => {\n if (props.stickyHeader) {\n return 'scroll';\n }\n\n return props.layout;\n });\n\n const isStickyHeaderEnabled = computed<boolean>(() => {\n return !!(\n (\n props.stickyHeader?.maxHeight && // table can't scroll without a max height; sticky headers only needed for a scrollable table\n props.stickyHeader?.listLength > 3\n ) // scrollable table and sticky headers not needed when list is small\n );\n });\n\n const rootStyle = computed(() => ({\n maxHeight: isStickyHeaderEnabled.value ? props.stickyHeader?.maxHeight : '',\n }));\n\n provide(TABLE_INJECTION.key, {\n density: computed(() => props.density || dataViewDensity.value || SpacingDensity.Comfortable),\n hasCustomExpandToggle: computed(() => props.hasCustomExpandToggle),\n hasActions: computed(() => props.hasActions),\n isExpandable: computed(() => props.isExpandable),\n isSelectable: computed(() => props.isSelectable && !props.isLoading && !props.isEmpty),\n layout: computedLayout,\n });\n</script>\n\n<template>\n <div\n class=\"stash-table tw-relative\"\n :class=\"[\n { 'tw-rounded': computedRadius === 'rounded' },\n { 'tw-rounded-b': computedRadius === 'rounded-bottom' },\n { 'tw-border-t tw-border-ice-200': dataViewVariant === 'table' },\n { 'tw-
|
|
1
|
+
{"version":3,"file":"Table.js","sources":["../src/components/Table/Table.types.ts","../src/components/Table/Table.vue"],"sourcesContent":["import { ComputedRef } from 'vue';\n\nimport { SpacingDensities } from '../../../types/misc';\n\nexport enum Layout {\n Scroll = 'scroll',\n Stack = 'stack',\n}\n\nexport type Layouts = `${Layout}`;\n\nexport enum TableRadius {\n None = 'none',\n Rounded = 'rounded',\n RoundedBottom = 'rounded-bottom',\n}\n\nexport type TableRadiuses = `${TableRadius}`;\n\n/**\n * Properties and utilities provided to children of a Table instance\n */\nexport interface TableInjection {\n /**\n * Controls the Table's padding; the default value is \"comfortable\". On small screens, the density will always be \"compact\".\n */\n density: ComputedRef<SpacingDensities>;\n\n /**\n * Styles the last column for \"row actions\"\n */\n hasActions: ComputedRef<boolean>;\n\n /**\n * If true, hides the default expansion toggle column\n */\n hasCustomExpandToggle: ComputedRef<boolean>;\n\n /**\n * Adds a toggle column for row expansion. This is primarily needed for ensuring the corresponding empty TableHeaderRow is included.\n */\n isExpandable: ComputedRef<boolean>;\n\n /**\n * Adds a checkbox column for selecting rows; intended for use with the `useSelection` composable.\n */\n isSelectable: ComputedRef<boolean>;\n\n /**\n * Sets the table layout; the default value is \"scroll\".\n */\n layout: ComputedRef<Layouts>;\n}\n","<script lang=\"ts\">\n import { SpacingDensities, SpacingDensity } from '../../../types/misc';\n import { MODULE_INJECTION } from '../Module/Module.keys';\n import { Layouts, TableRadiuses } from './Table.types';\n\n export * from './Table.keys';\n export * from './Table.types';\n\n export interface TableProps {\n /**\n * Controls the Table's padding; the default value is \"comfortable\". On small screens, \"compact\" density is applied regardless of this prop's value.\n */\n density?: SpacingDensities;\n\n /**\n * Sets the text for the empty state; the default value is \"No Results\".\n */\n emptyStateText?: string;\n\n /**\n * Styles the last column for \"row actions\"\n */\n hasActions?: boolean;\n\n /**\n * If true, hides the default expansion toggle column\n */\n hasCustomExpandToggle?: boolean;\n\n /**\n * Shows the empty state\n */\n isEmpty?: boolean;\n\n /**\n * Shows the loading state\n */\n isLoading?: boolean;\n\n /**\n * Adds a toggle column for row expansion. This is primarily needed for ensuring the corresponding empty TableHeaderRow is included.\n */\n isExpandable?: boolean;\n\n /**\n * Adds a checkbox column for selecting rows; intended for use with the `useSelection` composable.\n */\n isSelectable?: boolean;\n\n /**\n * Sets the table layout; the default value is \"scroll\".\n */\n layout?: Layouts;\n\n /**\n * Controls the corners of the table with the \"border-radius\" CSS property. The default value is \"rounded\".\n */\n radius?: TableRadiuses;\n\n /**\n * Allows the table head to be sticky when scrolling inside the table body\n */\n stickyHeader?: {\n listLength: number;\n maxHeight: string;\n };\n }\n</script>\n\n<script setup lang=\"ts\">\n import { computed, inject, provide } from 'vue';\n\n import { DATA_VIEW_INJECTION } from '../DataView/DataView.vue';\n import EmptyState from '../EmptyState/EmptyState.vue';\n import Loading from '../Loading/Loading.vue';\n import TableCell from '../TableCell/TableCell.vue';\n import TableRow from '../TableRow/TableRow.vue';\n import { TABLE_INJECTION } from './Table.keys';\n\n const props = withDefaults(defineProps<TableProps>(), {\n density: undefined,\n emptyStateText: '',\n hasActions: false,\n hasCustomExpandToggle: false,\n isEmpty: false,\n isLoading: false,\n isExpandable: false,\n isSelectable: false,\n layout: 'scroll',\n radius: 'rounded',\n stickyHeader: undefined,\n });\n\n const {\n density: dataViewDensity,\n variant: dataViewVariant,\n isLoading: isDataViewLoading,\n isEmpty: isDataViewEmpty,\n } = inject(DATA_VIEW_INJECTION.key, DATA_VIEW_INJECTION.defaults);\n\n const { variant: moduleVariant } = inject(MODULE_INJECTION.key, MODULE_INJECTION.defaults);\n\n const computedRadius = computed<TableRadiuses>(() => {\n // Will work for tables when rendered inside of a Module with OR without a DataView.\n if (moduleVariant?.value === 'table') {\n return 'rounded-bottom';\n }\n\n if (dataViewVariant.value === 'table') {\n return 'rounded-bottom';\n }\n\n return props.radius;\n });\n\n const computedLayout = computed<Layouts>(() => {\n if (props.stickyHeader) {\n return 'scroll';\n }\n\n return props.layout;\n });\n\n const isStickyHeaderEnabled = computed<boolean>(() => {\n return !!(\n (\n props.stickyHeader?.maxHeight && // table can't scroll without a max height; sticky headers only needed for a scrollable table\n props.stickyHeader?.listLength > 3\n ) // scrollable table and sticky headers not needed when list is small\n );\n });\n\n const rootStyle = computed(() => ({\n maxHeight: isStickyHeaderEnabled.value ? props.stickyHeader?.maxHeight : '',\n }));\n\n provide(TABLE_INJECTION.key, {\n density: computed(() => props.density || dataViewDensity.value || SpacingDensity.Comfortable),\n hasCustomExpandToggle: computed(() => props.hasCustomExpandToggle),\n hasActions: computed(() => props.hasActions),\n isExpandable: computed(() => props.isExpandable),\n isSelectable: computed(() => props.isSelectable && !props.isLoading && !props.isEmpty),\n layout: computedLayout,\n });\n</script>\n\n<template>\n <div\n class=\"stash-table tw-relative\"\n :class=\"[\n { 'tw-rounded': computedRadius === 'rounded' },\n { 'tw-rounded-b': computedRadius === 'rounded-bottom' },\n { 'tw-border-t tw-border-ice-200': dataViewVariant === 'table' },\n { 'tw-overflow-auto tw-shadow': computedLayout === 'scroll' },\n { 'tw-overflow-visble lg:tw-overflow-auto lg:tw-shadow': computedLayout === 'stack' },\n { 'tw-min-h-[300px]': isStickyHeaderEnabled && !props.isLoading }, // prevent the table from collapsing on small screen heights when the max-height is dynamic\n ]\"\n data-test=\"stash-table\"\n :style=\"rootStyle\"\n >\n <table class=\"tw-relative tw-min-w-full tw-max-w-initial tw-border-separate\">\n <thead\n class=\"tw-border-b tw-border-ice-200\"\n :class=\"{\n 'tw-hidden lg:tw-table-header-group': computedLayout === 'stack',\n }\"\n >\n <!-- @slot head -->\n <slot name=\"head\"> </slot>\n </thead>\n <tbody>\n <TableRow v-if=\"props.isLoading || isDataViewLoading\">\n <TableCell colspan=\"100%\">\n <Loading />\n </TableCell>\n </TableRow>\n <!-- @slot empty -->\n <slot v-else-if=\"props.isEmpty || isDataViewEmpty\" name=\"empty\">\n <TableRow>\n <TableCell colspan=\"100%\">\n <EmptyState class=\"tw-w-full tw-bg-white\" :text=\"props.emptyStateText\" />\n </TableCell>\n </TableRow>\n </slot>\n <!-- @slot body -->\n <slot v-else name=\"body\"></slot>\n </tbody>\n </table>\n </div>\n</template>\n"],"names":["Layout","TableRadius","dataViewDensity","dataViewVariant","isDataViewLoading","isDataViewEmpty","inject","DATA_VIEW_INJECTION","moduleVariant","MODULE_INJECTION","computedRadius","computed","props","computedLayout","isStickyHeaderEnabled","_a","_b","rootStyle","provide","TABLE_INJECTION","SpacingDensity"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIY,IAAAA,sBAAAA,OACVA,EAAA,SAAS,UACTA,EAAA,QAAQ,SAFEA,IAAAA,KAAA,CAAA,CAAA,GAOAC,sBAAAA,OACVA,EAAA,OAAO,QACPA,EAAA,UAAU,WACVA,EAAA,gBAAgB,kBAHNA,IAAAA,KAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;iBCkFJ;AAAA,MACJ,SAASC;AAAA,MACT,SAASC;AAAA,MACT,WAAWC;AAAA,MACX,SAASC;AAAA,IACP,IAAAC,EAAOC,EAAoB,KAAKA,EAAoB,QAAQ,GAE1D,EAAE,SAASC,MAAkBF,EAAOG,EAAiB,KAAKA,EAAiB,QAAQ,GAEnFC,IAAiBC,EAAwB,OAEzCH,KAAA,gBAAAA,EAAe,WAAU,WAIzBL,EAAgB,UAAU,UACrB,mBAGFS,EAAM,MACd,GAEKC,IAAiBF,EAAkB,MACnCC,EAAM,eACD,WAGFA,EAAM,MACd,GAEKE,IAAwBH,EAAkB,MAAM;;AAC7C,aAAA,CAAC,GAEJI,IAAAH,EAAM,iBAAN,QAAAG,EAAoB;AAAA,QACpBC,IAAAJ,EAAM,iBAAN,gBAAAI,EAAoB,cAAa;AAAA,IAAA,CAGtC,GAEKC,IAAYN,EAAS,MAAO;;AAAA;AAAA,QAChC,WAAWG,EAAsB,SAAQC,IAAAH,EAAM,iBAAN,gBAAAG,EAAoB,YAAY;AAAA,MACzE;AAAA,KAAA;AAEF,WAAAG,EAAQC,EAAgB,KAAK;AAAA,MAC3B,SAASR,EAAS,MAAMC,EAAM,WAAWV,EAAgB,SAASkB,EAAe,WAAW;AAAA,MAC5F,uBAAuBT,EAAS,MAAMC,EAAM,qBAAqB;AAAA,MACjE,YAAYD,EAAS,MAAMC,EAAM,UAAU;AAAA,MAC3C,cAAcD,EAAS,MAAMC,EAAM,YAAY;AAAA,MAC/C,cAAcD,EAAS,MAAMC,EAAM,gBAAgB,CAACA,EAAM,aAAa,CAACA,EAAM,OAAO;AAAA,MACrF,QAAQC;AAAA,IAAA,CACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const o = "_root_9c99g_2", t = {
|
|
2
|
+
root: o,
|
|
3
|
+
"layout--scroll": "_layout--scroll_9c99g_6",
|
|
4
|
+
"has-actions": "_has-actions_9c99g_12",
|
|
5
|
+
"layout--stack": "_layout--stack_9c99g_16",
|
|
6
|
+
"is-control": "_is-control_9c99g_28",
|
|
7
|
+
"root--density-comfortable": "_root--density-comfortable_9c99g_52"
|
|
8
|
+
}, _ = "_root_ngiw1_2", n = {
|
|
9
|
+
root: _,
|
|
10
|
+
"is-expandable": "_is-expandable_ngiw1_9",
|
|
11
|
+
"root--hidden-divider": "_root--hidden-divider_ngiw1_14",
|
|
12
|
+
"is-expanded": "_is-expanded_ngiw1_14",
|
|
13
|
+
"layout--scroll": "_layout--scroll_ngiw1_22",
|
|
14
|
+
"layout--stack": "_layout--stack_ngiw1_36",
|
|
15
|
+
"row-selection-checkbox": "_row-selection-checkbox_ngiw1_56",
|
|
16
|
+
"row-control-cell": "_row-control-cell_ngiw1_62",
|
|
17
|
+
"row-expansion-content": "_row-expansion-content_ngiw1_73",
|
|
18
|
+
"row-expansion": "_row-expansion_ngiw1_73"
|
|
19
|
+
}, c = Object.freeze({
|
|
20
|
+
key: Symbol("TABLE_INJECTION_KEY")
|
|
21
|
+
});
|
|
22
|
+
export {
|
|
23
|
+
c as T,
|
|
24
|
+
n as a,
|
|
25
|
+
t as s
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=Table.keys-cf93df19.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.keys-
|
|
1
|
+
{"version":3,"file":"Table.keys-cf93df19.js","sources":["../src/components/Table/Table.keys.ts"],"sourcesContent":["import { Injection } from '../../../types/utils';\nimport { TableInjection } from './Table.types';\n\nexport const TABLE_INJECTION: Injection<TableInjection> = Object.freeze({\n key: Symbol('TABLE_INJECTION_KEY'),\n});\n"],"names":["TABLE_INJECTION"],"mappings":";;;;;;;;;;;;;;;;;;GAGaA,IAA6C,OAAO,OAAO;AAAA,EACtE,KAAK,OAAO,qBAAqB;AACnC,CAAC;"}
|
package/dist/TableCell.js
CHANGED
|
@@ -1,55 +1,56 @@
|
|
|
1
|
-
import { defineComponent as p, useCssModule as d, inject as u, openBlock as
|
|
1
|
+
import { defineComponent as p, useCssModule as d, inject as u, openBlock as a, createElementBlock as c, normalizeClass as f, unref as t, toDisplayString as b, createCommentVNode as _, renderSlot as w } from "vue";
|
|
2
2
|
import "lodash-es/cloneDeep";
|
|
3
3
|
import "lodash-es/uniqueId";
|
|
4
4
|
import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
|
|
5
|
-
import "./Paginate.vue_used_vue_type_style_index_0_lang.module-
|
|
5
|
+
import "./Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js";
|
|
6
6
|
import "./DataView.vue_used_vue_type_style_index_0_lang.module-d878ca9a.js";
|
|
7
7
|
import "lodash-es/get";
|
|
8
8
|
import "./EmptyState.vue_used_vue_type_style_index_0_lang.module-f5d89366.js";
|
|
9
|
-
import "./Loading.
|
|
10
|
-
import { T as y, s as C } from "./Table.keys-
|
|
11
|
-
import "
|
|
12
|
-
import "./
|
|
9
|
+
import "./Loading.vue_used_vue_type_style_index_0_lang.module-ef5a3bc6.js";
|
|
10
|
+
import { T as y, s as C } from "./Table.keys-cf93df19.js";
|
|
11
|
+
import "@leaflink/snitch";
|
|
12
|
+
import "./Checkbox.vue_used_vue_type_style_index_0_lang.module-fa8d9c06.js";
|
|
13
|
+
import "./Button.vue_used_vue_type_style_index_0_lang.module-63d31dc0.js";
|
|
13
14
|
import { _ as h } from "./_plugin-vue_export-helper-dad06003.js";
|
|
14
15
|
const T = {
|
|
15
16
|
key: 0,
|
|
16
|
-
class: "tw-text-xs tw-text-ice-900
|
|
17
|
+
class: "tw-text-xs tw-font-medium tw-text-ice-900 lg:tw-hidden"
|
|
17
18
|
}, k = /* @__PURE__ */ p({
|
|
18
19
|
__name: "TableCell",
|
|
19
20
|
props: {
|
|
20
21
|
isControl: { type: Boolean, default: !1 },
|
|
21
22
|
mobileHeader: { default: "" }
|
|
22
23
|
},
|
|
23
|
-
setup(
|
|
24
|
-
const l =
|
|
25
|
-
if (!
|
|
24
|
+
setup(i) {
|
|
25
|
+
const l = i, o = d(), r = u(y.key);
|
|
26
|
+
if (!r)
|
|
26
27
|
throw new Error("TableCell must be used within a Table component");
|
|
27
|
-
const { density:
|
|
28
|
-
return (m, g) => (
|
|
28
|
+
const { density: e, hasActions: n, layout: s } = r;
|
|
29
|
+
return (m, g) => (a(), c("td", {
|
|
29
30
|
class: f(["stash-table-cell", [
|
|
30
|
-
t(
|
|
31
|
-
t(
|
|
31
|
+
t(o).root,
|
|
32
|
+
t(o)[`layout--${t(s)}`],
|
|
32
33
|
{
|
|
33
|
-
[t(
|
|
34
|
-
[t(
|
|
35
|
-
[t(
|
|
34
|
+
[t(o)["root--density-compact"]]: t(e) === "compact",
|
|
35
|
+
[t(o)["root--density-comfortable"]]: t(e) === "comfortable",
|
|
36
|
+
[t(o)["has-actions"]]: t(n),
|
|
36
37
|
"tw-p-3": t(s) === "scroll",
|
|
37
38
|
"tw-p-1.5": t(s) === "stack",
|
|
38
|
-
"lg:tw-p-3": t(
|
|
39
|
-
"lg:tw-
|
|
40
|
-
[t(
|
|
39
|
+
"lg:tw-p-3": t(e) === "compact",
|
|
40
|
+
"lg:tw-px-3 lg:tw-py-6": t(e) === "comfortable",
|
|
41
|
+
[t(o)["is-control"]]: l.isControl
|
|
41
42
|
}
|
|
42
43
|
]]),
|
|
43
44
|
"data-test": "stash-table-cell"
|
|
44
45
|
}, [
|
|
45
|
-
l.mobileHeader && t(s) === "stack" ? (
|
|
46
|
+
l.mobileHeader && t(s) === "stack" ? (a(), c("div", T, b(l.mobileHeader), 1)) : _("", !0),
|
|
46
47
|
w(m.$slots, "default")
|
|
47
48
|
], 2));
|
|
48
49
|
}
|
|
49
50
|
}), x = {
|
|
50
51
|
$style: C
|
|
51
|
-
},
|
|
52
|
+
}, L = /* @__PURE__ */ h(k, [["__cssModules", x]]);
|
|
52
53
|
export {
|
|
53
|
-
|
|
54
|
+
L as default
|
|
54
55
|
};
|
|
55
56
|
//# sourceMappingURL=TableCell.js.map
|
package/dist/TableCell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableCell.js","sources":["../src/components/TableCell/TableCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { inject, useCssModule } from 'vue';\n\n import { TABLE_INJECTION } from '../Table/Table.vue';\n\n export interface TableCellProps {\n /**\n * If true, displays the cell as a control (vs data) cell without a background color on mobile when Table is in the stacked layout\n */\n isControl?: boolean;\n /**\n * If true, displays the header inside the cell on mobile and tablet screens when Table is in the stacked layout\n */\n mobileHeader?: string;\n }\n\n const props = withDefaults(defineProps<TableCellProps>(), {\n isControl: false,\n mobileHeader: '',\n });\n const classes = useCssModule();\n\n const tableInjection = inject(TABLE_INJECTION.key);\n if (!tableInjection) {\n throw new Error('TableCell must be used within a Table component');\n }\n\n const { density, hasActions, layout } = tableInjection;\n</script>\n\n<template>\n <td\n class=\"stash-table-cell\"\n data-test=\"stash-table-cell\"\n :class=\"[\n classes.root,\n classes[`layout--${layout}`],\n {\n [classes['root--density-compact']]: density === 'compact',\n [classes['root--density-comfortable']]: density === 'comfortable',\n [classes['has-actions']]: hasActions,\n 'tw-p-3': layout === 'scroll',\n 'tw-p-1.5': layout === 'stack',\n 'lg:tw-p-3': density === 'compact',\n 'lg:tw-
|
|
1
|
+
{"version":3,"file":"TableCell.js","sources":["../src/components/TableCell/TableCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { inject, useCssModule } from 'vue';\n\n import { TABLE_INJECTION } from '../Table/Table.vue';\n\n export interface TableCellProps {\n /**\n * If true, displays the cell as a control (vs data) cell without a background color on mobile when Table is in the stacked layout\n */\n isControl?: boolean;\n /**\n * If true, displays the header inside the cell on mobile and tablet screens when Table is in the stacked layout\n */\n mobileHeader?: string;\n }\n\n const props = withDefaults(defineProps<TableCellProps>(), {\n isControl: false,\n mobileHeader: '',\n });\n const classes = useCssModule();\n\n const tableInjection = inject(TABLE_INJECTION.key);\n if (!tableInjection) {\n throw new Error('TableCell must be used within a Table component');\n }\n\n const { density, hasActions, layout } = tableInjection;\n</script>\n\n<template>\n <td\n class=\"stash-table-cell\"\n data-test=\"stash-table-cell\"\n :class=\"[\n classes.root,\n classes[`layout--${layout}`],\n {\n [classes['root--density-compact']]: density === 'compact',\n [classes['root--density-comfortable']]: density === 'comfortable',\n [classes['has-actions']]: hasActions,\n 'tw-p-3': layout === 'scroll',\n 'tw-p-1.5': layout === 'stack',\n 'lg:tw-p-3': density === 'compact',\n 'lg:tw-px-3 lg:tw-py-6': density === 'comfortable',\n [classes['is-control']]: props.isControl,\n },\n ]\"\n >\n <div v-if=\"props.mobileHeader && layout === 'stack'\" class=\"tw-text-xs tw-font-medium tw-text-ice-900 lg:tw-hidden\">\n {{ props.mobileHeader }}\n </div>\n <!-- @slot default -->\n <slot></slot>\n </td>\n</template>\n\n<style module>\n .root {\n border: 0;\n }\n\n .layout--scroll {\n background-color: var(--color-white);\n border: none;\n border-bottom: 1px solid var(--color-ice-200);\n }\n\n .layout--scroll.has-actions:last-of-type {\n text-align: center;\n }\n\n .layout--stack {\n background-color: var(--color-ice-100);\n border-radius: theme('borderRadius.DEFAULT');\n }\n\n .layout--stack.has-actions:last-of-type {\n background-color: transparent;\n position: absolute;\n right: 0;\n top: 0;\n }\n\n .layout--stack.is-control {\n background-color: transparent;\n }\n\n /* On large screens, layout--stack should match layout--scroll */\n @media screen('lg') {\n .layout--stack {\n background-color: var(--color-white);\n border-bottom: 1px solid var(--color-ice-200);\n border-radius: initial;\n }\n\n .layout--stack.has-actions:last-of-type {\n background-color: var(--color-white);\n position: initial;\n right: initial;\n text-align: center;\n top: initial;\n }\n\n .layout--stack.is-control {\n background-color: var(--color-white);\n }\n\n .root--density-comfortable:last-of-type:not(.has-actions) {\n padding-right: 24px;\n }\n\n .root--density-comfortable:first-of-type:not(:global(.stash-table-header-row__selection-cell), :global(.stash-table-row__selection-cell), :global(.stash-table-row__toggle-expansion-cell)) {\n padding-left: 24px;\n }\n }\n</style>\n"],"names":["classes","useCssModule","tableInjection","inject","TABLE_INJECTION","density","hasActions","layout"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;iBAoBQA,IAAUC,KAEVC,IAAiBC,EAAOC,EAAgB,GAAG;AACjD,QAAI,CAACF;AACG,YAAA,IAAI,MAAM,iDAAiD;AAGnE,UAAM,EAAE,SAAAG,GAAS,YAAAC,GAAY,QAAAC,EAAA,IAAWL;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/TableHeaderCell.js
CHANGED
|
@@ -1,39 +1,40 @@
|
|
|
1
|
-
import { defineComponent as k, useCssModule as T, inject as
|
|
1
|
+
import { defineComponent as k, useCssModule as T, inject as u, computed as p, openBlock as r, createElementBlock as _, normalizeClass as s, unref as t, createElementVNode as x, renderSlot as E, createBlock as w, createCommentVNode as n } from "vue";
|
|
2
2
|
import "lodash-es/cloneDeep";
|
|
3
3
|
import f from "./Icon.js";
|
|
4
|
-
import "./Paginate.vue_used_vue_type_style_index_0_lang.module-
|
|
4
|
+
import "./Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js";
|
|
5
5
|
import { D as b } from "./DataView.vue_used_vue_type_style_index_0_lang.module-d878ca9a.js";
|
|
6
6
|
import "lodash-es/get";
|
|
7
7
|
import "./EmptyState.vue_used_vue_type_style_index_0_lang.module-f5d89366.js";
|
|
8
|
-
import "./Loading.
|
|
9
|
-
import { T as
|
|
8
|
+
import "./Loading.vue_used_vue_type_style_index_0_lang.module-ef5a3bc6.js";
|
|
9
|
+
import { T as N } from "./Table.keys-cf93df19.js";
|
|
10
10
|
import "lodash-es/uniqueId";
|
|
11
|
-
import "
|
|
12
|
-
import "./
|
|
13
|
-
import
|
|
11
|
+
import "@leaflink/snitch";
|
|
12
|
+
import "./Checkbox.vue_used_vue_type_style_index_0_lang.module-fa8d9c06.js";
|
|
13
|
+
import "./Button.vue_used_vue_type_style_index_0_lang.module-63d31dc0.js";
|
|
14
|
+
import { _ as S } from "./_plugin-vue_export-helper-dad06003.js";
|
|
14
15
|
import "./index-79ce320f.js";
|
|
15
16
|
import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
|
|
16
|
-
const
|
|
17
|
+
const A = {
|
|
17
18
|
key: 0,
|
|
18
19
|
class: "tw-relative tw-h-4 tw-w-3"
|
|
19
|
-
},
|
|
20
|
+
}, B = /* @__PURE__ */ k({
|
|
20
21
|
__name: "TableHeaderCell",
|
|
21
22
|
props: {
|
|
22
23
|
sortId: { default: "" }
|
|
23
24
|
},
|
|
24
25
|
setup(h) {
|
|
25
|
-
const a = h, e = T(),
|
|
26
|
-
if (!
|
|
26
|
+
const a = h, e = T(), l = u(N.key);
|
|
27
|
+
if (!l)
|
|
27
28
|
throw new Error("TableHeaderCell must be used within a Table component");
|
|
28
|
-
const { density: i, hasActions: y } =
|
|
29
|
+
const { density: i, hasActions: y } = l, { currentSortId: v, currentSortOrder: d, updateCurrentSort: m } = u(
|
|
29
30
|
b.key,
|
|
30
31
|
b.defaults
|
|
31
|
-
), c =
|
|
32
|
+
), c = p(() => !!a.sortId), o = p(() => v.value === a.sortId);
|
|
32
33
|
function C() {
|
|
33
|
-
c.value && typeof
|
|
34
|
+
c.value && typeof m == "function" && m(a.sortId, { shouldEmit: !0 });
|
|
34
35
|
}
|
|
35
|
-
return (I,
|
|
36
|
-
class: s(["stash-table-header-cell tw-
|
|
36
|
+
return (I, O) => (r(), _("th", {
|
|
37
|
+
class: s(["stash-table-header-cell tw-border-b tw-border-r tw-border-ice-200 tw-p-3 tw-text-xs tw-font-medium tw-text-ice-900", [
|
|
37
38
|
t(e).root,
|
|
38
39
|
{
|
|
39
40
|
"tw-bg-white": !o.value,
|
|
@@ -41,47 +42,47 @@ const S = {
|
|
|
41
42
|
[t(e)["root--density-compact"]]: t(i) === "compact",
|
|
42
43
|
[t(e)["root--density-comfortable"]]: t(i) === "comfortable",
|
|
43
44
|
[t(e)["has-actions"]]: t(y),
|
|
44
|
-
"cursor-pointer": c.value
|
|
45
|
+
"tw-cursor-pointer": c.value
|
|
45
46
|
}
|
|
46
47
|
]]),
|
|
47
48
|
"data-test": "stash-table-header-cell",
|
|
48
49
|
onClick: C
|
|
49
50
|
}, [
|
|
50
51
|
x("div", {
|
|
51
|
-
class: s(["flex justify-between", t(e)["content-wrapper"]])
|
|
52
|
+
class: s(["tw-flex tw-justify-between", t(e)["content-wrapper"]])
|
|
52
53
|
}, [
|
|
53
54
|
E(I.$slots, "default"),
|
|
54
|
-
c.value ? (r(), _("div",
|
|
55
|
-
!o.value || t(
|
|
55
|
+
c.value ? (r(), _("div", A, [
|
|
56
|
+
!o.value || t(d) === "asc" ? (r(), w(f, {
|
|
56
57
|
key: 0,
|
|
57
58
|
class: s(["tw-absolute tw-text-ice-700", [t(e).caret, t(e)["caret-up"]]]),
|
|
58
59
|
"data-test": "icon|caret-up",
|
|
59
60
|
name: "caret-up",
|
|
60
61
|
size: "dense"
|
|
61
|
-
}, null, 8, ["class"])) :
|
|
62
|
-
!o.value || t(
|
|
62
|
+
}, null, 8, ["class"])) : n("", !0),
|
|
63
|
+
!o.value || t(d) === "desc" ? (r(), w(f, {
|
|
63
64
|
key: 1,
|
|
64
65
|
class: s(["tw-absolute tw-text-ice-700", [t(e).caret, t(e)["caret-down"]]]),
|
|
65
66
|
"data-test": "icon|caret-down",
|
|
66
67
|
name: "caret-down",
|
|
67
68
|
size: "dense"
|
|
68
|
-
}, null, 8, ["class"])) :
|
|
69
|
-
])) :
|
|
69
|
+
}, null, 8, ["class"])) : n("", !0)
|
|
70
|
+
])) : n("", !0)
|
|
70
71
|
], 2)
|
|
71
72
|
], 2));
|
|
72
73
|
}
|
|
73
|
-
}),
|
|
74
|
-
root:
|
|
75
|
-
"has-actions": "_has-
|
|
76
|
-
"content-wrapper": "_content-
|
|
77
|
-
"caret-up": "_caret-
|
|
78
|
-
"caret-down": "_caret-
|
|
79
|
-
caret:
|
|
80
|
-
"root--density-comfortable": "_root--density-
|
|
81
|
-
},
|
|
82
|
-
$style:
|
|
83
|
-
},
|
|
74
|
+
}), j = "_root_rrm9i_2", z = "_caret_rrm9i_18", H = {
|
|
75
|
+
root: j,
|
|
76
|
+
"has-actions": "_has-actions_rrm9i_14",
|
|
77
|
+
"content-wrapper": "_content-wrapper_rrm9i_14",
|
|
78
|
+
"caret-up": "_caret-up_rrm9i_18",
|
|
79
|
+
"caret-down": "_caret-down_rrm9i_22",
|
|
80
|
+
caret: z,
|
|
81
|
+
"root--density-comfortable": "_root--density-comfortable_rrm9i_31"
|
|
82
|
+
}, M = {
|
|
83
|
+
$style: H
|
|
84
|
+
}, Y = /* @__PURE__ */ S(B, [["__cssModules", M]]);
|
|
84
85
|
export {
|
|
85
|
-
|
|
86
|
+
Y as default
|
|
86
87
|
};
|
|
87
88
|
//# sourceMappingURL=TableHeaderCell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableHeaderCell.js","sources":["../src/components/TableHeaderCell/TableHeaderCell.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n import { computed, inject, useCssModule } from 'vue';\n\n import { DATA_VIEW_INJECTION, SortValueDeserialized } from '../DataView/DataView.vue';\n import Icon from '../Icon/Icon.vue';\n import { TABLE_INJECTION } from '../Table/Table.vue';\n\n export interface TableHeaderCellProps {\n /**\n * A unique value correlated to the data in this header's column (without a leading hyphen/dash).\n * For example: `'product_name'` (with no leading dash/hyphen).\n */\n sortId?: SortValueDeserialized['id'];\n }\n\n const props = withDefaults(defineProps<TableHeaderCellProps>(), {\n sortId: '',\n });\n const classes = useCssModule();\n\n const tableInjection = inject(TABLE_INJECTION.key);\n if (!tableInjection) {\n throw new Error('TableHeaderCell must be used within a Table component');\n }\n\n const { density, hasActions } = tableInjection;\n\n // #region sorting\n const { currentSortId, currentSortOrder, updateCurrentSort } = inject(\n DATA_VIEW_INJECTION.key,\n DATA_VIEW_INJECTION.defaults,\n );\n const isSortable = computed(() => !!props.sortId);\n const isActiveSort = computed(() => currentSortId.value === props.sortId);\n\n function onRootClick() {\n if (isSortable.value && typeof updateCurrentSort === 'function') {\n updateCurrentSort(props.sortId, { shouldEmit: true });\n }\n }\n // #endregion sorting\n</script>\n\n<template>\n <th\n class=\"\n stash-table-header-cell\n tw-
|
|
1
|
+
{"version":3,"file":"TableHeaderCell.js","sources":["../src/components/TableHeaderCell/TableHeaderCell.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n import { computed, inject, useCssModule } from 'vue';\n\n import { DATA_VIEW_INJECTION, SortValueDeserialized } from '../DataView/DataView.vue';\n import Icon from '../Icon/Icon.vue';\n import { TABLE_INJECTION } from '../Table/Table.vue';\n\n export interface TableHeaderCellProps {\n /**\n * A unique value correlated to the data in this header's column (without a leading hyphen/dash).\n * For example: `'product_name'` (with no leading dash/hyphen).\n */\n sortId?: SortValueDeserialized['id'];\n }\n\n const props = withDefaults(defineProps<TableHeaderCellProps>(), {\n sortId: '',\n });\n const classes = useCssModule();\n\n const tableInjection = inject(TABLE_INJECTION.key);\n if (!tableInjection) {\n throw new Error('TableHeaderCell must be used within a Table component');\n }\n\n const { density, hasActions } = tableInjection;\n\n // #region sorting\n const { currentSortId, currentSortOrder, updateCurrentSort } = inject(\n DATA_VIEW_INJECTION.key,\n DATA_VIEW_INJECTION.defaults,\n );\n const isSortable = computed(() => !!props.sortId);\n const isActiveSort = computed(() => currentSortId.value === props.sortId);\n\n function onRootClick() {\n if (isSortable.value && typeof updateCurrentSort === 'function') {\n updateCurrentSort(props.sortId, { shouldEmit: true });\n }\n }\n // #endregion sorting\n</script>\n\n<template>\n <th\n class=\"\n stash-table-header-cell\n tw-border-b tw-border-r tw-border-ice-200 tw-p-3 tw-text-xs tw-font-medium tw-text-ice-900\n \"\n :class=\"[\n classes.root,\n {\n 'tw-bg-white': !isActiveSort,\n 'stash-table-header-cell--sorted tw-bg-blue-100': isActiveSort,\n [classes['root--density-compact']]: density === 'compact',\n [classes['root--density-comfortable']]: density === 'comfortable',\n [classes['has-actions']]: hasActions,\n 'tw-cursor-pointer': isSortable,\n },\n ]\"\n data-test=\"stash-table-header-cell\"\n @click=\"onRootClick\"\n >\n <div class=\"tw-flex tw-justify-between\" :class=\"classes['content-wrapper']\">\n <!-- @slot default -->\n <slot></slot>\n <div v-if=\"isSortable\" class=\"tw-relative tw-h-4 tw-w-3\">\n <Icon\n v-if=\"!isActiveSort || currentSortOrder === 'asc'\"\n class=\"tw-absolute tw-text-ice-700\"\n :class=\"[classes.caret, classes['caret-up']]\"\n data-test=\"icon|caret-up\"\n name=\"caret-up\"\n size=\"dense\"\n />\n <Icon\n v-if=\"!isActiveSort || currentSortOrder === 'desc'\"\n class=\"tw-absolute tw-text-ice-700\"\n :class=\"[classes.caret, classes['caret-down']]\"\n data-test=\"icon|caret-down\"\n name=\"caret-down\"\n size=\"dense\"\n />\n </div>\n </div>\n </th>\n</template>\n\n<style module>\n .root {\n border-left: none;\n border-top: none;\n position: sticky;\n top: 0;\n z-index: 1;\n }\n\n .root:last-of-type {\n border-right: 0;\n }\n\n .has-actions:last-of-type .content-wrapper {\n justify-content: flex-end !important;\n }\n\n .caret-up {\n top: -5px;\n }\n\n .caret-down {\n top: 2px;\n }\n\n :global(.stash-table-header-cell--sorted) .caret {\n top: -2px; /* vertically center the caret icon */\n }\n\n @media screen('lg') {\n .root--density-comfortable:last-of-type {\n padding-right: 24px;\n }\n\n .root--density-comfortable:first-of-type:not(:global(.stash-table-header-row__selection-cell), :global(.stash-table-row__selection-cell)) {\n padding-left: 24px;\n }\n }\n</style>\n"],"names":["classes","useCssModule","tableInjection","inject","TABLE_INJECTION","density","hasActions","currentSortId","currentSortOrder","updateCurrentSort","DATA_VIEW_INJECTION","isSortable","computed","props","isActiveSort","onRootClick"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;iBAkBQA,IAAUC,KAEVC,IAAiBC,EAAOC,EAAgB,GAAG;AACjD,QAAI,CAACF;AACG,YAAA,IAAI,MAAM,uDAAuD;AAGnE,UAAA,EAAE,SAAAG,GAAS,YAAAC,EAAe,IAAAJ,GAG1B,EAAE,eAAAK,GAAe,kBAAAC,GAAkB,mBAAAC,EAAsB,IAAAN;AAAA,MAC7DO,EAAoB;AAAA,MACpBA,EAAoB;AAAA,IAAA,GAEhBC,IAAaC,EAAS,MAAM,CAAC,CAACC,EAAM,MAAM,GAC1CC,IAAeF,EAAS,MAAML,EAAc,UAAUM,EAAM,MAAM;AAExE,aAASE,IAAc;AACrB,MAAIJ,EAAW,SAAS,OAAOF,KAAsB,cACnDA,EAAkBI,EAAM,QAAQ,EAAE,YAAY,GAAM,CAAA;AAAA,IAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/TableHeaderRow.js
CHANGED
|
@@ -4,16 +4,17 @@ import C from "./Checkbox.js";
|
|
|
4
4
|
import "lodash-es/cloneDeep";
|
|
5
5
|
import "lodash-es/uniqueId";
|
|
6
6
|
import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
|
|
7
|
-
import "./Paginate.vue_used_vue_type_style_index_0_lang.module-
|
|
7
|
+
import "./Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js";
|
|
8
8
|
import "./DataView.vue_used_vue_type_style_index_0_lang.module-d878ca9a.js";
|
|
9
9
|
import "./EmptyState.vue_used_vue_type_style_index_0_lang.module-f5d89366.js";
|
|
10
|
-
import "./Loading.
|
|
11
|
-
import { T as R } from "./Table.keys-
|
|
12
|
-
import "./Button.vue_used_vue_type_style_index_0_lang.module-
|
|
10
|
+
import "./Loading.vue_used_vue_type_style_index_0_lang.module-ef5a3bc6.js";
|
|
11
|
+
import { T as R } from "./Table.keys-cf93df19.js";
|
|
12
|
+
import "./Button.vue_used_vue_type_style_index_0_lang.module-63d31dc0.js";
|
|
13
13
|
import m from "./TableHeaderCell.js";
|
|
14
14
|
import { _ as S } from "./_plugin-vue_export-helper-dad06003.js";
|
|
15
15
|
import "lodash-es/get";
|
|
16
|
-
import "
|
|
16
|
+
import "@leaflink/snitch";
|
|
17
|
+
import "./Checkbox.vue_used_vue_type_style_index_0_lang.module-fa8d9c06.js";
|
|
17
18
|
import "./Icon.js";
|
|
18
19
|
import "./index-79ce320f.js";
|
|
19
20
|
const B = {
|
|
@@ -26,13 +27,13 @@ const B = {
|
|
|
26
27
|
someRowsSelected: { type: Boolean, default: !1 }
|
|
27
28
|
},
|
|
28
29
|
emits: ["select"],
|
|
29
|
-
setup(
|
|
30
|
-
const l =
|
|
30
|
+
setup(d, { emit: p }) {
|
|
31
|
+
const l = d, a = _(R.key);
|
|
31
32
|
if (!a)
|
|
32
33
|
throw new Error("TableHeaderRow must be used within a Table component");
|
|
33
34
|
const { hasCustomExpandToggle: w, isExpandable: h, isSelectable: u } = a, c = b(0);
|
|
34
35
|
function n() {
|
|
35
|
-
|
|
36
|
+
p("select"), c.value++;
|
|
36
37
|
}
|
|
37
38
|
return (e, I) => (t(), k("tr", B, [
|
|
38
39
|
o(u) ? (t(), s(m, {
|
|
@@ -61,12 +62,12 @@ const B = {
|
|
|
61
62
|
]));
|
|
62
63
|
}
|
|
63
64
|
}), $ = {
|
|
64
|
-
"row-selection-checkbox": "_row-selection-
|
|
65
|
-
"row-control-cell": "_row-control-
|
|
65
|
+
"row-selection-checkbox": "_row-selection-checkbox_1eq6o_2",
|
|
66
|
+
"row-control-cell": "_row-control-cell_1eq6o_8"
|
|
66
67
|
}, H = {
|
|
67
68
|
$style: $
|
|
68
|
-
},
|
|
69
|
+
}, W = /* @__PURE__ */ S(E, [["__cssModules", H]]);
|
|
69
70
|
export {
|
|
70
|
-
|
|
71
|
+
W as default
|
|
71
72
|
};
|
|
72
73
|
//# 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 { 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 =\n 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 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 <TableHeaderCell\n v-if=\"isSelectable\"\n class=\"stash-table-header-row__selection-cell tw-min-w-[48px]\"\n :class=\"$style['row-control-cell']\"\n >\n <Checkbox\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 <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 .row-selection-checkbox label {\n padding: 0;\n min-height:
|
|
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 { 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 =\n 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 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 <TableHeaderCell\n v-if=\"isSelectable\"\n class=\"stash-table-header-row__selection-cell tw-min-w-[48px]\"\n :class=\"$style['row-control-cell']\"\n >\n <Checkbox\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 <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 .row-selection-checkbox label {\n padding: 0;\n min-height: theme('spacing.6');\n vertical-align: middle;\n }\n\n .row-control-cell {\n border-right: 0;\n }\n</style>\n"],"names":["tableInjection","inject","TABLE_INJECTION","hasCustomExpandToggle","isExpandable","isSelectable","checkboxKey","ref","onSelect","emit"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuBQA,IAAiBC,EAAOC,EAAgB,GAAG;AAEjD,QAAI,CAACF;AACG,YAAA,IAAI,MAAM,sDAAsD;AAGxE,UAAM,EAAE,uBAAAG,GAAuB,cAAAC,GAAc,cAAAC,EAAA,IAAiBL,GAExDM,IAAcC,EAAI,CAAC;AAEzB,aAASC,IAAW;AAClB,MAAAC,EAAK,QAAQ,GAODH,EAAA;AAAA,IACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|