@leaflink/stash 42.4.4 → 42.5.1
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 +27 -3
- package/dist/ActionsDropdown.js +15 -20
- package/dist/ActionsDropdown.js.map +1 -1
- package/dist/AddressSelect.js +34 -45
- package/dist/AddressSelect.js.map +1 -1
- package/dist/Alert.js +58 -57
- package/dist/Alert.js.map +1 -1
- package/dist/AppNavigationItem.js +4 -6
- package/dist/AppNavigationItem.js.map +1 -1
- package/dist/AppTopbar.js +13 -15
- package/dist/AppTopbar.js.map +1 -1
- package/dist/ButtonGroup.js +12 -14
- package/dist/ButtonGroup.js.map +1 -1
- package/dist/CardMedia.js +9 -11
- package/dist/CardMedia.js.map +1 -1
- package/dist/Carousel.js +41 -44
- package/dist/Carousel.js.map +1 -1
- package/dist/Checkbox.js +9 -11
- package/dist/Checkbox.js.map +1 -1
- package/dist/ChevronToggle.js +2 -4
- package/dist/ChevronToggle.js.map +1 -1
- package/dist/Chip.js +4 -6
- package/dist/Chip.js.map +1 -1
- package/dist/ContextSwitcher.js +12 -17
- package/dist/ContextSwitcher.js.map +1 -1
- package/dist/Copy.js +19 -24
- package/dist/Copy.js.map +1 -1
- package/dist/CurrencyInput.js +8 -13
- package/dist/CurrencyInput.js.map +1 -1
- package/dist/DataView.js +48 -59
- package/dist/DataView.js.map +1 -1
- package/dist/DataViewFilters.js +87 -97
- package/dist/DataViewFilters.js.map +1 -1
- package/dist/DataViewSortButton.js +14 -18
- package/dist/DataViewSortButton.js.map +1 -1
- package/dist/DataViewToolbar.js +12 -14
- package/dist/DataViewToolbar.js.map +1 -1
- package/dist/DatePicker.js +2624 -2581
- package/dist/DatePicker.js.map +1 -1
- package/dist/DatePicker.vue.d.ts +19 -0
- package/dist/Dialog.js +6 -9
- package/dist/Dialog.js.map +1 -1
- package/dist/Dropdown.js +15 -20
- package/dist/Dropdown.js.map +1 -1
- package/dist/EmptyState.js +10 -13
- package/dist/EmptyState.js.map +1 -1
- package/dist/Field.js +3 -6
- package/dist/Field.js.map +1 -1
- package/dist/{Field.vue_vue_type_script_setup_true_lang-c864abd3.js → Field.vue_vue_type_script_setup_true_lang-475832fe.js} +2 -2
- package/dist/{Field.vue_vue_type_script_setup_true_lang-c864abd3.js.map → Field.vue_vue_type_script_setup_true_lang-475832fe.js.map} +1 -1
- package/dist/FileUpload.js +27 -30
- package/dist/FileUpload.js.map +1 -1
- package/dist/FilterChip.js +10 -13
- package/dist/FilterChip.js.map +1 -1
- package/dist/FilterDrawerItem.js +5 -8
- package/dist/FilterDrawerItem.js.map +1 -1
- package/dist/FilterDropdown.js +73 -88
- package/dist/FilterDropdown.js.map +1 -1
- package/dist/FilterSelect.js +15 -18
- package/dist/FilterSelect.js.map +1 -1
- package/dist/Filters.js +67 -78
- package/dist/Filters.js.map +1 -1
- package/dist/HttpError.js +4 -7
- package/dist/HttpError.js.map +1 -1
- package/dist/Icon.js +236 -14
- package/dist/Icon.js.map +1 -1
- package/dist/Icon.vue.d.ts +2 -2
- package/dist/Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js +11 -0
- package/dist/Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js.map +1 -0
- package/dist/IconLabel.js +4 -6
- package/dist/IconLabel.js.map +1 -1
- package/dist/Illustration.js +6 -8
- package/dist/Illustration.js.map +1 -1
- package/dist/Image.js +39 -49
- package/dist/Image.js.map +1 -1
- package/dist/InlineEdit.js +10 -12
- package/dist/InlineEdit.js.map +1 -1
- package/dist/Input.js +50 -55
- package/dist/Input.js.map +1 -1
- package/dist/InputOptions.js +20 -29
- package/dist/InputOptions.js.map +1 -1
- package/dist/Label.js +1 -4
- package/dist/Label.js.map +1 -1
- package/dist/LicenseChip.js +7 -9
- package/dist/LicenseChip.js.map +1 -1
- package/dist/ListItem.js +11 -13
- package/dist/ListItem.js.map +1 -1
- package/dist/ListView.js +47 -58
- package/dist/ListView.js.map +1 -1
- package/dist/Metric.js +43 -45
- package/dist/Metric.js.map +1 -1
- package/dist/Metric.vue.d.ts +24 -15
- package/dist/Modal.js +16 -19
- package/dist/Modal.js.map +1 -1
- package/dist/Modals.js +16 -26
- package/dist/Modals.js.map +1 -1
- package/dist/ModalsPlugin.js +12 -22
- package/dist/ModalsPlugin.js.map +1 -1
- package/dist/ObfuscateText.js +7 -9
- package/dist/ObfuscateText.js.map +1 -1
- package/dist/PageNavigation.js +25 -29
- package/dist/PageNavigation.js.map +1 -1
- package/dist/Paginate.js +29 -31
- package/dist/Paginate.js.map +1 -1
- package/dist/QuickAction.js +13 -15
- package/dist/QuickAction.js.map +1 -1
- package/dist/RadioGroup.js +86 -89
- package/dist/RadioGroup.js.map +1 -1
- package/dist/SearchBar.js +18 -20
- package/dist/SearchBar.js.map +1 -1
- package/dist/Select.js +13 -23
- package/dist/Select.js.map +1 -1
- package/dist/SelectStatus.js +26 -36
- package/dist/SelectStatus.js.map +1 -1
- package/dist/Step.js +19 -21
- package/dist/Step.js.map +1 -1
- package/dist/Switch.js +8 -10
- package/dist/Switch.js.map +1 -1
- package/dist/Tab.js +25 -30
- package/dist/Tab.js.map +1 -1
- package/dist/Table.js +19 -21
- package/dist/Table.js.map +1 -1
- package/dist/TableCell.js +21 -22
- package/dist/TableCell.js.map +1 -1
- package/dist/TableHeaderCell.js +4 -4
- package/dist/TableHeaderRow.js +7 -9
- package/dist/TableHeaderRow.js.map +1 -1
- package/dist/TableRow.js +22 -24
- package/dist/TableRow.js.map +1 -1
- package/dist/Tabs.js +11 -16
- package/dist/Tabs.js.map +1 -1
- package/dist/{Tabs.vue_vue_type_script_setup_true_lang-ba383fda.js → Tabs.vue_vue_type_script_setup_true_lang-aca4f8b8.js} +3 -3
- package/dist/{Tabs.vue_vue_type_script_setup_true_lang-ba383fda.js.map → Tabs.vue_vue_type_script_setup_true_lang-aca4f8b8.js.map} +1 -1
- package/dist/Textarea.js +10 -13
- package/dist/Textarea.js.map +1 -1
- package/dist/Toast.js +8 -10
- package/dist/Toast.js.map +1 -1
- package/dist/Toasts.js +14 -25
- package/dist/Toasts.js.map +1 -1
- package/dist/ToastsPlugin.js +14 -25
- package/dist/ToastsPlugin.js.map +1 -1
- package/dist/components.css +1 -1
- package/dist/index.js +53 -62
- package/dist/index.js.map +1 -1
- package/dist/locale.js +12 -15
- package/dist/locale.js.map +1 -1
- package/dist/{searchFuzzy-13c124f8.js → searchFuzzy-74a7de1c.js} +2 -2
- package/dist/{searchFuzzy-13c124f8.js.map → searchFuzzy-74a7de1c.js.map} +1 -1
- package/dist/storage.js +6 -11
- package/dist/storage.js.map +1 -1
- package/dist/tooltip.js +21 -26
- package/dist/tooltip.js.map +1 -1
- package/dist/useGoogleMaps.js +91 -226
- package/dist/useGoogleMaps.js.map +1 -1
- package/dist/useModals.js +21 -31
- package/dist/useModals.js.map +1 -1
- package/dist/useSearch.js +17 -22
- package/dist/useSearch.js.map +1 -1
- package/dist/useToasts.js +25 -36
- package/dist/useToasts.js.map +1 -1
- package/dist/useValidation.js +79 -108
- package/dist/useValidation.js.map +1 -1
- package/dist/utils/calculateElementOverflow.js +9 -14
- package/dist/utils/calculateElementOverflow.js.map +1 -1
- package/dist/utils/createQueryString.js +9 -15
- package/dist/utils/createQueryString.js.map +1 -1
- package/dist/utils/helpers.js +46 -59
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/i18n.js +17 -20
- package/dist/utils/i18n.js.map +1 -1
- package/dist/utils/searchFuzzy.js +7 -12
- package/dist/utils/searchFuzzy.js.map +1 -1
- package/dist/utils/storage.js +10 -15
- package/dist/utils/storage.js.map +1 -1
- package/dist/viewable.js +26 -34
- package/dist/viewable.js.map +1 -1
- package/package.json +4 -6
- package/dist/Icon.vue_used_vue_type_style_index_0_lang.module-d2507af3.js +0 -243
- package/dist/Icon.vue_used_vue_type_style_index_0_lang.module-d2507af3.js.map +0 -1
- package/dist/_MapCache-65811284.js +0 -188
- package/dist/_MapCache-65811284.js.map +0 -1
- package/dist/_Uint8Array-06e4d083.js +0 -66
- package/dist/_Uint8Array-06e4d083.js.map +0 -1
- package/dist/_baseAssignValue-dd1499b4.js +0 -22
- package/dist/_baseAssignValue-dd1499b4.js.map +0 -1
- package/dist/_baseIsEqual-d594c87f.js +0 -171
- package/dist/_baseIsEqual-d594c87f.js.map +0 -1
- package/dist/_createCompounder-ae01a723.js +0 -245
- package/dist/_createCompounder-ae01a723.js.map +0 -1
- package/dist/_getAllKeys-5e735d41.js +0 -44
- package/dist/_getAllKeys-5e735d41.js.map +0 -1
- package/dist/_getPrototype-3e6fccd6.js +0 -7
- package/dist/_getPrototype-3e6fccd6.js.map +0 -1
- package/dist/_getTag-4db47fa6.js +0 -47
- package/dist/_getTag-4db47fa6.js.map +0 -1
- package/dist/_initCloneObject-161353b9.js +0 -88
- package/dist/_initCloneObject-161353b9.js.map +0 -1
- package/dist/_overArg-6d920d99.js +0 -9
- package/dist/_overArg-6d920d99.js.map +0 -1
- package/dist/capitalize-667d9f60.js +0 -42
- package/dist/capitalize-667d9f60.js.map +0 -1
- package/dist/cloneDeep-5bc375b0.js +0 -146
- package/dist/cloneDeep-5bc375b0.js.map +0 -1
- package/dist/debounce-6aca1ca9.js +0 -86
- package/dist/debounce-6aca1ca9.js.map +0 -1
- package/dist/get-27d90892.js +0 -66
- package/dist/get-27d90892.js.map +0 -1
- package/dist/identity-452d03fd.js +0 -20
- package/dist/identity-452d03fd.js.map +0 -1
- package/dist/isArrayLike-09233e52.js +0 -61
- package/dist/isArrayLike-09233e52.js.map +0 -1
- package/dist/isEmpty-2fbad344.js +0 -23
- package/dist/isEmpty-2fbad344.js.map +0 -1
- package/dist/isEqual-fca467fb.js +0 -8
- package/dist/isEqual-fca467fb.js.map +0 -1
- package/dist/isObjectLike-54341556.js +0 -39
- package/dist/isObjectLike-54341556.js.map +0 -1
- package/dist/isPlainObject-55c7f916.js +0 -16
- package/dist/isPlainObject-55c7f916.js.map +0 -1
- package/dist/merge-b14fad9d.js +0 -124
- package/dist/merge-b14fad9d.js.map +0 -1
- package/dist/toString-7d5bf363.js +0 -29
- package/dist/toString-7d5bf363.js.map +0 -1
- package/dist/uniqueId-847efe53.js +0 -10
- package/dist/uniqueId-847efe53.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.vue_vue_type_script_setup_true_lang-ba383fda.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 debounce from 'lodash-es/debounce';\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, onBeforeUnmount, onDeactivated, onMounted, onUpdated, provide, Ref, ref } from 'vue';\n\n import { DEBOUNCE } from '../../constants';\n import { t } from '../../locale';\n import Dropdown from '../Dropdown/Dropdown.vue';\n import Icon from '../Icon/Icon.vue';\n import { TABS_INJECTION } from './keys';\n\n const emit =\n 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 tabListEl = ref();\n const moreDropdownMenuEl = ref();\n const observer: Ref<IntersectionObserver | undefined> = ref(undefined);\n const hasIntersectionObserver = 'IntersectionObserver' in window;\n const overflowIds = ref<Set<string>>(new Set());\n const moreDropdownWidth = ref(0);\n const moreDropdownEl = ref<InstanceType<typeof Dropdown>>();\n const moreMenuId = uniqueId('more-dropdown-menu-');\n const isMoreMenuOpen = ref(false);\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 function initObserve() {\n if (!hasIntersectionObserver) {\n return;\n }\n\n if (!tabListEl.value) {\n return;\n }\n\n const tabs = Array.from(tabListEl.value?.children as HTMLLIElement[]);\n const options = {\n root: tabListEl.value,\n rootMargin: '0px',\n threshold: Array.from({ length: 100 }).map((v, i) => (i + 1) / 100),\n };\n\n observer.value = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n const dataId = entry.target.getAttribute('id') as string;\n /**\n * Check for partial intersection.\n * Zooming out can result in ratio of approx 0.984\n * Anything higher will result in nav items disappearing\n */\n if (entry.intersectionRatio > 0.94) {\n // show tab, hide in dropdown\n if (overflowIds.value.has(dataId)) {\n overflowIds.value.delete(dataId);\n }\n } else {\n // hide tab, show in dropdown\n if (dataId && !overflowIds.value.has(dataId)) {\n overflowIds.value.add(dataId);\n }\n }\n });\n }, options);\n\n tabs.forEach((element) => {\n observer.value?.observe(element);\n if (overflowIds.value.has(element.getAttribute('id') as string)) {\n element.classList.add('tw-invisible');\n } else {\n element.classList.remove('tw-invisible');\n }\n });\n\n moreDropdownWidth.value = moreDropdownEl.value?.$el?.getBoundingClientRect().width;\n\n if (!moreDropdownMenuEl.value) {\n return;\n }\n\n const dropdownList = Array.from(moreDropdownMenuEl.value.children as HTMLLIElement[]);\n dropdownList.forEach((element) => {\n element.className = '';\n const el = element.firstChild as Element;\n el.className = '';\n element.setAttribute('aria-selected', 'false');\n\n element.addEventListener('click', () => {\n if (element.getAttribute('aria-selected')) {\n element.classList.add('tw-bg-blue', 'tw-text-white');\n }\n });\n\n if (!overflowIds.value.has(element.getAttribute('id') as string)) {\n element.classList.add('tw-hidden');\n const el = element.firstChild as Element;\n el.className = '';\n } else {\n element.classList.remove('tw-hidden');\n element.classList.add(\n 'tw-rounded',\n 'dropdown-link',\n 'tw-text-sm',\n 'tw-cursor-pointer',\n 'tw-p-1.5',\n 'hover:tw-bg-blue',\n 'hover:tw-text-white',\n );\n }\n\n element.removeEventListener('click', () => {});\n });\n }\n\n const debouncedInitObserve = debounce(initObserve, DEBOUNCE.FAST, { leading: true });\n\n function destroyObserver() {\n if (observer.value) {\n observer.value.disconnect();\n observer.value = undefined;\n }\n }\n\n onMounted(() => {\n initObserve();\n });\n\n onUpdated(() => {\n destroyObserver();\n debouncedInitObserve();\n });\n\n onDeactivated(() => {\n destroyObserver();\n });\n\n onBeforeUnmount(() => {\n destroyObserver();\n });\n\n function onMoreClick(toggleMoreDropdown) {\n toggleMoreDropdown();\n isMoreMenuOpen.value = !isMoreMenuOpen.value;\n }\n</script>\n\n<template>\n <div class=\"root stash-tabs tw-relative\" role=\"tabList\" data-test=\"stash-tabs\">\n <ul\n ref=\"tabListEl\"\n :style=\"{\n width: `calc(100% - ${moreDropdownWidth}px)`,\n }\"\n class=\"stash-tabs-list tw-flex tw-items-end tw-overflow-hidden\"\n :class=\"{\n 'stash-tabs-list--line': variant === 'line',\n 'stash-tabs-list--enclosed': variant === 'enclosed',\n 'tw-gap-6': variant === 'line',\n }\"\n >\n <slot></slot>\n\n <Dropdown v-if=\"overflowIds.size\" ref=\"moreDropdownEl\" class=\"!tw-absolute tw-right-0 tw-top-0\">\n <template #toggle=\"{ toggle }\">\n <button\n aria-haspopup=\"menu\"\n :aria-controls=\"moreMenuId\"\n :aria-expanded=\"isMoreMenuOpen\"\n class=\"\n tw-font-medium\n tw-text-sm\n tw-border-solid\n tw-py-1.5\n tw-flex\n tw-items-center\n tw-justify-center\n tw-cursor-pointer\n tw-px-6\n tw-text-blue-500\n hover:tw-text-blue-700\n \"\n :class=\"{ 'tw-border-t-4 tw-border-transparent': props.variant === 'enclosed' }\"\n type=\"button\"\n @click=\"onMoreClick(toggle)\"\n >\n {{ t('ll.more') }}\n <Icon name=\"caret-down\" />\n </button>\n </template>\n <template #default>\n <ul\n :id=\"moreMenuId\"\n ref=\"moreDropdownMenuEl\"\n class=\"dropdown-list tw-px-1.5 tw-pb-1.5 tw-space-y-1.5\"\n role=\"menu\"\n >\n <slot></slot>\n </ul>\n </template>\n </Dropdown>\n </ul>\n </div>\n</template>\n"],"names":["TABS_INJECTION","TabVariant","tabListEl","ref","moreDropdownMenuEl","observer","hasIntersectionObserver","overflowIds","moreDropdownWidth","moreDropdownEl","moreMenuId","uniqueId","isMoreMenuOpen","currentActiveTab","computed","props","nv","emit","setActiveTab","newTabValue","provide","initObserve","tabs","_a","options","v","i","entries","entry","dataId","element","_c","_b","el","debouncedInitObserve","debounce","DEBOUNCE","destroyObserver","onMounted","onUpdated","onDeactivated","onBeforeUnmount","onMoreClick","toggleMoreDropdown"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tabs.vue_vue_type_script_setup_true_lang-aca4f8b8.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 debounce from 'lodash-es/debounce';\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, onBeforeUnmount, onDeactivated, onMounted, onUpdated, provide, Ref, ref } from 'vue';\n\n import { DEBOUNCE } from '../../constants';\n import { t } from '../../locale';\n import Dropdown from '../Dropdown/Dropdown.vue';\n import Icon from '../Icon/Icon.vue';\n import { TABS_INJECTION } from './keys';\n\n const emit =\n 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 tabListEl = ref();\n const moreDropdownMenuEl = ref();\n const observer: Ref<IntersectionObserver | undefined> = ref(undefined);\n const hasIntersectionObserver = 'IntersectionObserver' in window;\n const overflowIds = ref<Set<string>>(new Set());\n const moreDropdownWidth = ref(0);\n const moreDropdownEl = ref<InstanceType<typeof Dropdown>>();\n const moreMenuId = uniqueId('more-dropdown-menu-');\n const isMoreMenuOpen = ref(false);\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 function initObserve() {\n if (!hasIntersectionObserver) {\n return;\n }\n\n if (!tabListEl.value) {\n return;\n }\n\n const tabs = Array.from(tabListEl.value?.children as HTMLLIElement[]);\n const options = {\n root: tabListEl.value,\n rootMargin: '0px',\n threshold: Array.from({ length: 100 }).map((v, i) => (i + 1) / 100),\n };\n\n observer.value = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n const dataId = entry.target.getAttribute('id') as string;\n /**\n * Check for partial intersection.\n * Zooming out can result in ratio of approx 0.984\n * Anything higher will result in nav items disappearing\n */\n if (entry.intersectionRatio > 0.94) {\n // show tab, hide in dropdown\n if (overflowIds.value.has(dataId)) {\n overflowIds.value.delete(dataId);\n }\n } else {\n // hide tab, show in dropdown\n if (dataId && !overflowIds.value.has(dataId)) {\n overflowIds.value.add(dataId);\n }\n }\n });\n }, options);\n\n tabs.forEach((element) => {\n observer.value?.observe(element);\n if (overflowIds.value.has(element.getAttribute('id') as string)) {\n element.classList.add('tw-invisible');\n } else {\n element.classList.remove('tw-invisible');\n }\n });\n\n moreDropdownWidth.value = moreDropdownEl.value?.$el?.getBoundingClientRect().width;\n\n if (!moreDropdownMenuEl.value) {\n return;\n }\n\n const dropdownList = Array.from(moreDropdownMenuEl.value.children as HTMLLIElement[]);\n dropdownList.forEach((element) => {\n element.className = '';\n const el = element.firstChild as Element;\n el.className = '';\n element.setAttribute('aria-selected', 'false');\n\n element.addEventListener('click', () => {\n if (element.getAttribute('aria-selected')) {\n element.classList.add('tw-bg-blue', 'tw-text-white');\n }\n });\n\n if (!overflowIds.value.has(element.getAttribute('id') as string)) {\n element.classList.add('tw-hidden');\n const el = element.firstChild as Element;\n el.className = '';\n } else {\n element.classList.remove('tw-hidden');\n element.classList.add(\n 'tw-rounded',\n 'dropdown-link',\n 'tw-text-sm',\n 'tw-cursor-pointer',\n 'tw-p-1.5',\n 'hover:tw-bg-blue',\n 'hover:tw-text-white',\n );\n }\n\n element.removeEventListener('click', () => {});\n });\n }\n\n const debouncedInitObserve = debounce(initObserve, DEBOUNCE.FAST, { leading: true });\n\n function destroyObserver() {\n if (observer.value) {\n observer.value.disconnect();\n observer.value = undefined;\n }\n }\n\n onMounted(() => {\n initObserve();\n });\n\n onUpdated(() => {\n destroyObserver();\n debouncedInitObserve();\n });\n\n onDeactivated(() => {\n destroyObserver();\n });\n\n onBeforeUnmount(() => {\n destroyObserver();\n });\n\n function onMoreClick(toggleMoreDropdown) {\n toggleMoreDropdown();\n isMoreMenuOpen.value = !isMoreMenuOpen.value;\n }\n</script>\n\n<template>\n <div class=\"root stash-tabs tw-relative\" role=\"tabList\" data-test=\"stash-tabs\">\n <ul\n ref=\"tabListEl\"\n :style=\"{\n width: `calc(100% - ${moreDropdownWidth}px)`,\n }\"\n class=\"stash-tabs-list tw-flex tw-items-end tw-overflow-hidden\"\n :class=\"{\n 'stash-tabs-list--line': variant === 'line',\n 'stash-tabs-list--enclosed': variant === 'enclosed',\n 'tw-gap-6': variant === 'line',\n }\"\n >\n <slot></slot>\n\n <Dropdown v-if=\"overflowIds.size\" ref=\"moreDropdownEl\" class=\"!tw-absolute tw-right-0 tw-top-0\">\n <template #toggle=\"{ toggle }\">\n <button\n aria-haspopup=\"menu\"\n :aria-controls=\"moreMenuId\"\n :aria-expanded=\"isMoreMenuOpen\"\n class=\"\n tw-font-medium\n tw-text-sm\n tw-border-solid\n tw-py-1.5\n tw-flex\n tw-items-center\n tw-justify-center\n tw-cursor-pointer\n tw-px-6\n tw-text-blue-500\n hover:tw-text-blue-700\n \"\n :class=\"{ 'tw-border-t-4 tw-border-transparent': props.variant === 'enclosed' }\"\n type=\"button\"\n @click=\"onMoreClick(toggle)\"\n >\n {{ t('ll.more') }}\n <Icon name=\"caret-down\" />\n </button>\n </template>\n <template #default>\n <ul\n :id=\"moreMenuId\"\n ref=\"moreDropdownMenuEl\"\n class=\"dropdown-list tw-px-1.5 tw-pb-1.5 tw-space-y-1.5\"\n role=\"menu\"\n >\n <slot></slot>\n </ul>\n </template>\n </Dropdown>\n </ul>\n </div>\n</template>\n"],"names":["TABS_INJECTION","TabVariant","tabListEl","ref","moreDropdownMenuEl","observer","hasIntersectionObserver","overflowIds","moreDropdownWidth","moreDropdownEl","moreMenuId","uniqueId","isMoreMenuOpen","currentActiveTab","computed","props","nv","emit","setActiveTab","newTabValue","provide","initObserve","tabs","_a","options","v","i","entries","entry","dataId","element","_c","_b","el","debouncedInitObserve","debounce","DEBOUNCE","destroyObserver","onMounted","onUpdated","onDeactivated","onBeforeUnmount","onMoreClick","toggleMoreDropdown"],"mappings":"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"}
|
package/dist/Textarea.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import { defineComponent as _, useAttrs as f, useSlots as v, computed as x, onMounted as h, openBlock as w, createBlock as I, mergeProps as
|
|
2
|
-
import
|
|
3
|
-
import { _ as k } from "./Field.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
import { defineComponent as _, useAttrs as f, useSlots as v, computed as x, onMounted as h, openBlock as w, createBlock as I, mergeProps as l, unref as a, createSlots as T, withCtx as s, createElementVNode as b, renderSlot as y } from "vue";
|
|
2
|
+
import g from "lodash-es/uniqueId";
|
|
3
|
+
import { _ as k } from "./Field.vue_vue_type_script_setup_true_lang-475832fe.js";
|
|
4
4
|
import { _ as A } from "./_plugin-vue_export-helper-dad06003.js";
|
|
5
|
-
import "./toString-7d5bf363.js";
|
|
6
|
-
import "./isObjectLike-54341556.js";
|
|
7
5
|
import "./Label.vue_vue_type_script_setup_true_lang-1d29d98a.js";
|
|
8
6
|
import "./locale.js";
|
|
9
|
-
import "
|
|
10
|
-
import "./_MapCache-65811284.js";
|
|
7
|
+
import "lodash-es/get";
|
|
11
8
|
const B = ["id", "value"], E = /* @__PURE__ */ _({
|
|
12
9
|
name: "ll-textarea",
|
|
13
10
|
__name: "Textarea",
|
|
@@ -32,13 +29,13 @@ const B = ["id", "value"], E = /* @__PURE__ */ _({
|
|
|
32
29
|
throw new Error("ll-input: use :model-value or v-model instead of :value.");
|
|
33
30
|
if (t.onInput)
|
|
34
31
|
throw new Error("ll-input: use the @update:model-value event instead of @input");
|
|
35
|
-
}), (e, S) => (w(), I(k,
|
|
32
|
+
}), (e, S) => (w(), I(k, l(o, {
|
|
36
33
|
id: a(u),
|
|
37
34
|
class: ["stash-textarea", [a(t).class]],
|
|
38
35
|
"data-test": "stash-textarea"
|
|
39
36
|
}), T({
|
|
40
|
-
default:
|
|
41
|
-
b("textarea",
|
|
37
|
+
default: s(({ fieldId: m, hasError: c }) => [
|
|
38
|
+
b("textarea", l({
|
|
42
39
|
id: m,
|
|
43
40
|
class: { "stash-textarea--error": c },
|
|
44
41
|
value: e.modelValue,
|
|
@@ -49,7 +46,7 @@ const B = ["id", "value"], E = /* @__PURE__ */ _({
|
|
|
49
46
|
}, [
|
|
50
47
|
a(d).hint ? {
|
|
51
48
|
name: "hint",
|
|
52
|
-
fn:
|
|
49
|
+
fn: s(() => [
|
|
53
50
|
y(e.$slots, "hint", {}, void 0, !0)
|
|
54
51
|
]),
|
|
55
52
|
key: "0"
|
|
@@ -57,8 +54,8 @@ const B = ["id", "value"], E = /* @__PURE__ */ _({
|
|
|
57
54
|
]), 1040, ["id", "class"]));
|
|
58
55
|
}
|
|
59
56
|
});
|
|
60
|
-
const
|
|
57
|
+
const O = /* @__PURE__ */ A(E, [["__scopeId", "data-v-b1a41a86"]]);
|
|
61
58
|
export {
|
|
62
|
-
|
|
59
|
+
O as default
|
|
63
60
|
};
|
|
64
61
|
//# sourceMappingURL=Textarea.js.map
|
package/dist/Textarea.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.js","sources":["../src/components/Textarea/Textarea.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, onMounted, useAttrs, useSlots } from 'vue';\n\n import Field from '../Field/Field.vue';\n\n export interface TextAreaProps {\n /**\n * Label text for the textarea element.\n */\n label?: string;\n /**\n * Value for the textarea element.\n */\n modelValue?: string;\n /**\n * Deprecated. Use :model-value or v-model instead of :value.\n * @deprecated Use :model-value or v-model instead of :value.\n */\n value?: string | number | null;\n /**\n * Error text for the textarea element.\n */\n errorText?: string;\n /**\n * Hint text for the textarea element.\n */\n hintText?: string;\n /**\n * Render \"(optional)\" to the right of the label text\n */\n showOptionalInLabel?: boolean;\n }\n\n defineOptions({\n name: 'll-textarea',\n });\n\n /**\n * Unique ID for the textarea, required for accessibility purposes\n */\n const id = uniqueId('textarea-');\n\n const attrs = useAttrs();\n const slots = useSlots();\n\n const props = withDefaults(defineProps<TextAreaProps>(), {\n label: ' ',\n modelValue: '',\n value: null,\n errorText: '',\n hintText: '',\n showOptionalInLabel: false,\n });\n\n const emits =\n defineEmits<{\n /**\n * Emitted when the model value changes.\n */\n (e: 'update:model-value', value: string): void;\n }>();\n\n const inputAttrs = computed(() => {\n const allAttrs = { ...attrs };\n\n delete allAttrs['data-test'];\n delete allAttrs.class;\n\n return allAttrs;\n });\n\n const onInput = (event: Event) => {\n emits('update:model-value', (event.target as HTMLTextAreaElement).value);\n };\n\n onMounted(() => {\n if (props.value !== null) {\n throw new Error('ll-input: use :model-value or v-model instead of :value.');\n }\n\n if (attrs.onInput) {\n throw new Error('ll-input: use the @update:model-value event instead of @input');\n }\n });\n</script>\n\n<template>\n <Field v-bind=\"props\" :id=\"id\" class=\"stash-textarea\" :class=\"[attrs.class]\" data-test=\"stash-textarea\">\n <template #default=\"{ fieldId, hasError }\">\n <textarea\n :id=\"fieldId\"\n :class=\"{ 'stash-textarea--error': hasError }\"\n :value=\"modelValue\"\n data-test=\"stash-textarea|textarea\"\n v-bind=\"inputAttrs\"\n @input=\"onInput\"\n ></textarea>\n </template>\n <template v-if=\"slots.hint\" #hint>\n <!-- @slot Hint content -->\n <slot name=\"hint\"></slot>\n </template>\n </Field>\n</template>\n\n<style scoped>\n .stash-textarea {\n position: relative;\n width: 100%;\n\n textarea {\n background: theme(colors.white);\n border: 1px solid;\n border-color: theme(colors.ice.DEFAULT);\n border-radius: theme(borderRadius.DEFAULT);\n color: theme(colors.ice.700);\n display: block;\n min-height: 100px;\n resize: none;\n outline: none;\n padding: theme(spacing[1.5]);\n width: 100%;\n\n &:hover {\n border-color: theme(colors.ice.DEFAULT);\n }\n\n &:focus,\n &:active {\n border-color: theme(colors.blue.DEFAULT);\n }\n\n &.stash-textarea--error {\n border-color: theme(colors.red.DEFAULT);\n color: theme(colors.red.DEFAULT);\n }\n }\n }\n</style>\n"],"names":["id","uniqueId","attrs","useAttrs","slots","useSlots","inputAttrs","computed","allAttrs","onInput","event","emits","onMounted","props"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Textarea.js","sources":["../src/components/Textarea/Textarea.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, onMounted, useAttrs, useSlots } from 'vue';\n\n import Field from '../Field/Field.vue';\n\n export interface TextAreaProps {\n /**\n * Label text for the textarea element.\n */\n label?: string;\n /**\n * Value for the textarea element.\n */\n modelValue?: string;\n /**\n * Deprecated. Use :model-value or v-model instead of :value.\n * @deprecated Use :model-value or v-model instead of :value.\n */\n value?: string | number | null;\n /**\n * Error text for the textarea element.\n */\n errorText?: string;\n /**\n * Hint text for the textarea element.\n */\n hintText?: string;\n /**\n * Render \"(optional)\" to the right of the label text\n */\n showOptionalInLabel?: boolean;\n }\n\n defineOptions({\n name: 'll-textarea',\n });\n\n /**\n * Unique ID for the textarea, required for accessibility purposes\n */\n const id = uniqueId('textarea-');\n\n const attrs = useAttrs();\n const slots = useSlots();\n\n const props = withDefaults(defineProps<TextAreaProps>(), {\n label: ' ',\n modelValue: '',\n value: null,\n errorText: '',\n hintText: '',\n showOptionalInLabel: false,\n });\n\n const emits =\n defineEmits<{\n /**\n * Emitted when the model value changes.\n */\n (e: 'update:model-value', value: string): void;\n }>();\n\n const inputAttrs = computed(() => {\n const allAttrs = { ...attrs };\n\n delete allAttrs['data-test'];\n delete allAttrs.class;\n\n return allAttrs;\n });\n\n const onInput = (event: Event) => {\n emits('update:model-value', (event.target as HTMLTextAreaElement).value);\n };\n\n onMounted(() => {\n if (props.value !== null) {\n throw new Error('ll-input: use :model-value or v-model instead of :value.');\n }\n\n if (attrs.onInput) {\n throw new Error('ll-input: use the @update:model-value event instead of @input');\n }\n });\n</script>\n\n<template>\n <Field v-bind=\"props\" :id=\"id\" class=\"stash-textarea\" :class=\"[attrs.class]\" data-test=\"stash-textarea\">\n <template #default=\"{ fieldId, hasError }\">\n <textarea\n :id=\"fieldId\"\n :class=\"{ 'stash-textarea--error': hasError }\"\n :value=\"modelValue\"\n data-test=\"stash-textarea|textarea\"\n v-bind=\"inputAttrs\"\n @input=\"onInput\"\n ></textarea>\n </template>\n <template v-if=\"slots.hint\" #hint>\n <!-- @slot Hint content -->\n <slot name=\"hint\"></slot>\n </template>\n </Field>\n</template>\n\n<style scoped>\n .stash-textarea {\n position: relative;\n width: 100%;\n\n textarea {\n background: theme(colors.white);\n border: 1px solid;\n border-color: theme(colors.ice.DEFAULT);\n border-radius: theme(borderRadius.DEFAULT);\n color: theme(colors.ice.700);\n display: block;\n min-height: 100px;\n resize: none;\n outline: none;\n padding: theme(spacing[1.5]);\n width: 100%;\n\n &:hover {\n border-color: theme(colors.ice.DEFAULT);\n }\n\n &:focus,\n &:active {\n border-color: theme(colors.blue.DEFAULT);\n }\n\n &.stash-textarea--error {\n border-color: theme(colors.red.DEFAULT);\n color: theme(colors.red.DEFAULT);\n }\n }\n }\n</style>\n"],"names":["id","uniqueId","attrs","useAttrs","slots","useSlots","inputAttrs","computed","allAttrs","onInput","event","emits","onMounted","props"],"mappings":";;;;;;;;;;;;;;;;;;;;iBAyCQA,IAAKC,EAAS,WAAW,GAEzBC,IAAQC,KACRC,IAAQC,KAmBRC,IAAaC,EAAS,MAAM;AAC1B,YAAAC,IAAW,EAAE,GAAGN;AAEtB,oBAAOM,EAAS,WAAW,GAC3B,OAAOA,EAAS,OAETA;AAAA,IAAA,CACR,GAEKC,IAAU,CAACC,MAAiB;AAC1B,MAAAC,EAAA,sBAAuBD,EAAM,OAA+B,KAAK;AAAA,IAAA;AAGzE,WAAAE,EAAU,MAAM;AACV,UAAAC,EAAM,UAAU;AACZ,cAAA,IAAI,MAAM,0DAA0D;AAG5E,UAAIX,EAAM;AACF,cAAA,IAAI,MAAM,+DAA+D;AAAA,IACjF,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/Toast.js
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import { defineComponent as c, useCssModule as l, computed as o, openBlock as
|
|
2
|
-
import
|
|
1
|
+
import { defineComponent as c, useCssModule as l, computed as o, openBlock as _, createElementBlock as i, normalizeClass as p, unref as e, createVNode as m, createElementVNode as f, toDisplayString as d } from "vue";
|
|
2
|
+
import y from "lodash-es/capitalize";
|
|
3
3
|
import { b as a, S as q } from "./statusLevels-2c64f4f8.js";
|
|
4
4
|
import x from "./Icon.js";
|
|
5
5
|
import { _ as S } from "./_plugin-vue_export-helper-dad06003.js";
|
|
6
|
-
import "
|
|
7
|
-
import "./isObjectLike-54341556.js";
|
|
8
|
-
import "./Icon.vue_used_vue_type_style_index_0_lang.module-d2507af3.js";
|
|
9
|
-
import "./uniqueId-847efe53.js";
|
|
6
|
+
import "lodash-es/uniqueId";
|
|
10
7
|
import "./index-79ce320f.js";
|
|
8
|
+
import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
|
|
11
9
|
const h = ["role"], I = /* @__PURE__ */ c({
|
|
12
10
|
__name: "Toast",
|
|
13
11
|
props: {
|
|
@@ -18,9 +16,9 @@ const h = ["role"], I = /* @__PURE__ */ c({
|
|
|
18
16
|
const t = r, s = l(), n = o(
|
|
19
17
|
() => t.status ? a[y(t.status)] : a.Info
|
|
20
18
|
), u = o(() => t.status === q.Error ? "alert" : "status");
|
|
21
|
-
return (E, M) => (
|
|
19
|
+
return (E, M) => (_(), i("li", {
|
|
22
20
|
role: u.value,
|
|
23
|
-
class:
|
|
21
|
+
class: p([[e(s).root, e(s)[`status--${t.status}`]], "stash-toast"]),
|
|
24
22
|
"data-test": "stash-toast"
|
|
25
23
|
}, [
|
|
26
24
|
m(x, { name: n.value }, null, 8, ["name"]),
|
|
@@ -35,8 +33,8 @@ const h = ["role"], I = /* @__PURE__ */ c({
|
|
|
35
33
|
"status--warning": "_status--warning_spyoq_49"
|
|
36
34
|
}, C = {
|
|
37
35
|
$style: v
|
|
38
|
-
},
|
|
36
|
+
}, b = /* @__PURE__ */ S(I, [["__cssModules", C]]);
|
|
39
37
|
export {
|
|
40
|
-
|
|
38
|
+
b as default
|
|
41
39
|
};
|
|
42
40
|
//# sourceMappingURL=Toast.js.map
|
package/dist/Toast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.js","sources":["../src/components/Toast/Toast.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import capitalize from 'lodash-es/capitalize';\n import { computed, useCssModule } from 'vue';\n\n import { StatusIcon, StatusIcons, StatusSeverities, StatusSeverity } from '../../../types/statusLevels';\n import Icon from '../Icon/Icon.vue';\n\n export interface ToastProps {\n /**\n * The toast text.\n */\n text: string;\n /**\n * The toast status.\n */\n status?: StatusSeverity;\n }\n\n const classes = useCssModule();\n\n const props = withDefaults(defineProps<ToastProps>(), {\n status: 'info',\n });\n\n const statusIcon = computed<StatusIcon>(() =>\n props.status ? StatusIcons[capitalize(props.status)] : StatusIcons.Info,\n );\n\n const ariaRole = computed<string>(() => {\n if (props.status === StatusSeverities.Error) {\n return 'alert';\n } else {\n return 'status';\n }\n });\n</script>\n\n<template>\n <li\n :role=\"ariaRole\"\n :class=\"[classes.root, classes[`status--${props.status}`]]\"\n class=\"stash-toast\"\n data-test=\"stash-toast\"\n >\n <Icon :name=\"statusIcon\" />\n <p>{{ props.text }}</p>\n </li>\n</template>\n\n<style module>\n .root {\n display: flex;\n align-items: center;\n width: 100%;\n border-width: 1px var(--ll-space-1) 1px 1px;\n border-radius: var(--border-radius);\n padding: calc(var(--ll-space-1) * 3) var(--ll-space-2);\n cursor: pointer;\n }\n\n .root > * + * {\n margin-left: var(--ll-space-2);\n }\n\n .root p {\n margin-bottom: 0;\n color: var(--color-ice-900);\n font-size: 1rem;\n }\n\n .status--success {\n background-color: var(--color-green-100);\n border-color: var(--color-green-500);\n }\n\n .status--success svg {\n color: var(--color-green-500);\n }\n\n .status--error {\n background-color: var(--color-red-100);\n border-color: var(--color-red-500);\n }\n\n .status--error svg {\n color: var(--color-red-500);\n }\n\n .status--info {\n background-color: var(--color-blue-100);\n border-color: var(--color-blue-500);\n }\n\n .status--info svg {\n color: var(--color-blue-500);\n }\n\n .status--warning {\n background-color: var(--color-orange-100);\n border-color: var(--color-orange-500);\n }\n\n .status--warning svg {\n color: var(--color-orange-500);\n }\n</style>\n"],"names":["classes","useCssModule","statusIcon","computed","props","StatusIcons","capitalize","ariaRole","StatusSeverities"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Toast.js","sources":["../src/components/Toast/Toast.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import capitalize from 'lodash-es/capitalize';\n import { computed, useCssModule } from 'vue';\n\n import { StatusIcon, StatusIcons, StatusSeverities, StatusSeverity } from '../../../types/statusLevels';\n import Icon from '../Icon/Icon.vue';\n\n export interface ToastProps {\n /**\n * The toast text.\n */\n text: string;\n /**\n * The toast status.\n */\n status?: StatusSeverity;\n }\n\n const classes = useCssModule();\n\n const props = withDefaults(defineProps<ToastProps>(), {\n status: 'info',\n });\n\n const statusIcon = computed<StatusIcon>(() =>\n props.status ? StatusIcons[capitalize(props.status)] : StatusIcons.Info,\n );\n\n const ariaRole = computed<string>(() => {\n if (props.status === StatusSeverities.Error) {\n return 'alert';\n } else {\n return 'status';\n }\n });\n</script>\n\n<template>\n <li\n :role=\"ariaRole\"\n :class=\"[classes.root, classes[`status--${props.status}`]]\"\n class=\"stash-toast\"\n data-test=\"stash-toast\"\n >\n <Icon :name=\"statusIcon\" />\n <p>{{ props.text }}</p>\n </li>\n</template>\n\n<style module>\n .root {\n display: flex;\n align-items: center;\n width: 100%;\n border-width: 1px var(--ll-space-1) 1px 1px;\n border-radius: var(--border-radius);\n padding: calc(var(--ll-space-1) * 3) var(--ll-space-2);\n cursor: pointer;\n }\n\n .root > * + * {\n margin-left: var(--ll-space-2);\n }\n\n .root p {\n margin-bottom: 0;\n color: var(--color-ice-900);\n font-size: 1rem;\n }\n\n .status--success {\n background-color: var(--color-green-100);\n border-color: var(--color-green-500);\n }\n\n .status--success svg {\n color: var(--color-green-500);\n }\n\n .status--error {\n background-color: var(--color-red-100);\n border-color: var(--color-red-500);\n }\n\n .status--error svg {\n color: var(--color-red-500);\n }\n\n .status--info {\n background-color: var(--color-blue-100);\n border-color: var(--color-blue-500);\n }\n\n .status--info svg {\n color: var(--color-blue-500);\n }\n\n .status--warning {\n background-color: var(--color-orange-100);\n border-color: var(--color-orange-500);\n }\n\n .status--warning svg {\n color: var(--color-orange-500);\n }\n</style>\n"],"names":["classes","useCssModule","statusIcon","computed","props","StatusIcons","capitalize","ariaRole","StatusSeverities"],"mappings":";;;;;;;;;;;;;;;iBAkBQA,IAAUC,KAMVC,IAAaC;AAAA,MAAqB,MACtCC,EAAM,SAASC,EAAYC,EAAWF,EAAM,MAAM,CAAC,IAAIC,EAAY;AAAA,IAAA,GAG/DE,IAAWJ,EAAiB,MAC5BC,EAAM,WAAWI,EAAiB,QAC7B,UAEA,QAEV;;;;;;;;;;;;;;;;;;;"}
|
package/dist/Toasts.js
CHANGED
|
@@ -1,43 +1,32 @@
|
|
|
1
|
-
import { defineComponent as
|
|
1
|
+
import { defineComponent as n, useCssModule as i, openBlock as s, createBlock as r, TransitionGroup as c, normalizeClass as l, unref as o, withCtx as m, createElementBlock as _, Fragment as u, renderList as p } from "vue";
|
|
2
2
|
import d from "./useToasts.js";
|
|
3
3
|
import f from "./Toast.js";
|
|
4
4
|
import { _ as x } from "./_plugin-vue_export-helper-dad06003.js";
|
|
5
|
-
import "
|
|
6
|
-
import "
|
|
7
|
-
import "
|
|
8
|
-
import "./isObjectLike-54341556.js";
|
|
9
|
-
import "./_MapCache-65811284.js";
|
|
10
|
-
import "./_baseAssignValue-dd1499b4.js";
|
|
11
|
-
import "./identity-452d03fd.js";
|
|
12
|
-
import "./_initCloneObject-161353b9.js";
|
|
13
|
-
import "./_getPrototype-3e6fccd6.js";
|
|
14
|
-
import "./_overArg-6d920d99.js";
|
|
15
|
-
import "./isPlainObject-55c7f916.js";
|
|
16
|
-
import "./uniqueId-847efe53.js";
|
|
17
|
-
import "./toString-7d5bf363.js";
|
|
18
|
-
import "./capitalize-667d9f60.js";
|
|
5
|
+
import "lodash-es/merge";
|
|
6
|
+
import "lodash-es/uniqueId";
|
|
7
|
+
import "lodash-es/capitalize";
|
|
19
8
|
import "./statusLevels-2c64f4f8.js";
|
|
20
9
|
import "./Icon.js";
|
|
21
|
-
import "./Icon.vue_used_vue_type_style_index_0_lang.module-d2507af3.js";
|
|
22
10
|
import "./index-79ce320f.js";
|
|
23
|
-
|
|
11
|
+
import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
|
|
12
|
+
const k = /* @__PURE__ */ n({
|
|
24
13
|
__name: "Toasts",
|
|
25
14
|
setup(y) {
|
|
26
|
-
const
|
|
27
|
-
return (h, g) => (
|
|
15
|
+
const e = d(), a = i();
|
|
16
|
+
return (h, g) => (s(), r(c, {
|
|
28
17
|
"aria-atomic": "true",
|
|
29
18
|
"aria-live": "polite",
|
|
30
19
|
name: "toasts",
|
|
31
20
|
tag: "ul",
|
|
32
|
-
class:
|
|
21
|
+
class: l([o(a).root, "stash-toasts"]),
|
|
33
22
|
"data-test": "stash-toasts"
|
|
34
23
|
}, {
|
|
35
|
-
default:
|
|
36
|
-
(
|
|
24
|
+
default: m(() => [
|
|
25
|
+
(s(!0), _(u, null, p(o(e).active, (t) => (s(), r(f, {
|
|
37
26
|
key: t.id,
|
|
38
27
|
text: t.text,
|
|
39
28
|
status: t.status,
|
|
40
|
-
onClick: (B) =>
|
|
29
|
+
onClick: (B) => o(e).remove(t.id)
|
|
41
30
|
}, null, 8, ["text", "status", "onClick"]))), 128))
|
|
42
31
|
]),
|
|
43
32
|
_: 1
|
|
@@ -48,8 +37,8 @@ const k = /* @__PURE__ */ a({
|
|
|
48
37
|
};
|
|
49
38
|
const T = {
|
|
50
39
|
$style: C
|
|
51
|
-
},
|
|
40
|
+
}, A = /* @__PURE__ */ x(k, [["__cssModules", T]]);
|
|
52
41
|
export {
|
|
53
|
-
|
|
42
|
+
A as default
|
|
54
43
|
};
|
|
55
44
|
//# sourceMappingURL=Toasts.js.map
|
package/dist/Toasts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toasts.js","sources":["../src/components/Toasts/Toasts.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { useCssModule } from 'vue';\n\n import useToasts from '../../composables/useToasts/useToasts';\n import Toast from '../Toast/Toast.vue';\n\n const toasts = useToasts();\n const classes = useCssModule();\n</script>\n\n<template>\n <TransitionGroup\n aria-atomic=\"true\"\n aria-live=\"polite\"\n name=\"toasts\"\n tag=\"ul\"\n :class=\"classes.root\"\n class=\"stash-toasts\"\n data-test=\"stash-toasts\"\n >\n <Toast\n v-for=\"toast in toasts.active\"\n :key=\"toast.id\"\n :text=\"toast.text\"\n :status=\"toast.status\"\n @click=\"toasts.remove(toast.id)\"\n />\n </TransitionGroup>\n</template>\n\n<style module>\n .root {\n display: flex;\n flex-direction: column;\n position: fixed;\n min-width: 300px;\n max-width: calc(320px - theme('spacing.3'));\n right: theme('spacing.6');\n top: theme('spacing.6');\n z-index: 1002;\n row-gap: theme('spacing[1.5]');\n }\n</style>\n\n<style>\n .toasts-enter-active,\n .toasts-leave-active {\n transition: all 0.5s ease;\n }\n\n .toasts-enter-from,\n .toasts-leave-to {\n opacity: 0;\n transform: translateX(30px);\n }\n</style>\n"],"names":["toasts","useToasts","classes","useCssModule"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Toasts.js","sources":["../src/components/Toasts/Toasts.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { useCssModule } from 'vue';\n\n import useToasts from '../../composables/useToasts/useToasts';\n import Toast from '../Toast/Toast.vue';\n\n const toasts = useToasts();\n const classes = useCssModule();\n</script>\n\n<template>\n <TransitionGroup\n aria-atomic=\"true\"\n aria-live=\"polite\"\n name=\"toasts\"\n tag=\"ul\"\n :class=\"classes.root\"\n class=\"stash-toasts\"\n data-test=\"stash-toasts\"\n >\n <Toast\n v-for=\"toast in toasts.active\"\n :key=\"toast.id\"\n :text=\"toast.text\"\n :status=\"toast.status\"\n @click=\"toasts.remove(toast.id)\"\n />\n </TransitionGroup>\n</template>\n\n<style module>\n .root {\n display: flex;\n flex-direction: column;\n position: fixed;\n min-width: 300px;\n max-width: calc(320px - theme('spacing.3'));\n right: theme('spacing.6');\n top: theme('spacing.6');\n z-index: 1002;\n row-gap: theme('spacing[1.5]');\n }\n</style>\n\n<style>\n .toasts-enter-active,\n .toasts-leave-active {\n transition: all 0.5s ease;\n }\n\n .toasts-enter-from,\n .toasts-leave-to {\n opacity: 0;\n transform: translateX(30px);\n }\n</style>\n"],"names":["toasts","useToasts","classes","useCssModule"],"mappings":";;;;;;;;;;;;;;AAME,UAAMA,IAASC,KACTC,IAAUC;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/ToastsPlugin.js
CHANGED
|
@@ -1,36 +1,25 @@
|
|
|
1
|
-
import { createVNode as
|
|
2
|
-
import
|
|
1
|
+
import { createVNode as r, h as a, render as l } from "vue";
|
|
2
|
+
import n from "./Toasts.js";
|
|
3
3
|
import "./useToasts.js";
|
|
4
|
-
import "
|
|
5
|
-
import "
|
|
6
|
-
import "./isArrayLike-09233e52.js";
|
|
7
|
-
import "./isObjectLike-54341556.js";
|
|
8
|
-
import "./_MapCache-65811284.js";
|
|
9
|
-
import "./_baseAssignValue-dd1499b4.js";
|
|
10
|
-
import "./identity-452d03fd.js";
|
|
11
|
-
import "./_initCloneObject-161353b9.js";
|
|
12
|
-
import "./_getPrototype-3e6fccd6.js";
|
|
13
|
-
import "./_overArg-6d920d99.js";
|
|
14
|
-
import "./isPlainObject-55c7f916.js";
|
|
15
|
-
import "./uniqueId-847efe53.js";
|
|
16
|
-
import "./toString-7d5bf363.js";
|
|
4
|
+
import "lodash-es/merge";
|
|
5
|
+
import "lodash-es/uniqueId";
|
|
17
6
|
import "./Toast.js";
|
|
18
|
-
import "
|
|
7
|
+
import "lodash-es/capitalize";
|
|
19
8
|
import "./statusLevels-2c64f4f8.js";
|
|
20
9
|
import "./Icon.js";
|
|
21
|
-
import "./Icon.vue_used_vue_type_style_index_0_lang.module-d2507af3.js";
|
|
22
10
|
import "./index-79ce320f.js";
|
|
11
|
+
import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
|
|
23
12
|
import "./_plugin-vue_export-helper-dad06003.js";
|
|
24
|
-
const
|
|
25
|
-
install(
|
|
26
|
-
const
|
|
27
|
-
let
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
document.body.appendChild(
|
|
13
|
+
const v = {
|
|
14
|
+
install(o, t) {
|
|
15
|
+
const m = (t == null ? void 0 : t.mountNodeId) || "stash-toasts-mount-node";
|
|
16
|
+
let e = document.getElementById(m);
|
|
17
|
+
e || (e = document.createElement("div"), e.id = m), t != null && t.mountNodeClass && e.classList.add(t.mountNodeClass);
|
|
18
|
+
const d = r(a(n));
|
|
19
|
+
document.body.appendChild(e), d.appContext = o._context, l(d, e);
|
|
31
20
|
}
|
|
32
21
|
};
|
|
33
22
|
export {
|
|
34
|
-
|
|
23
|
+
v as default
|
|
35
24
|
};
|
|
36
25
|
//# sourceMappingURL=ToastsPlugin.js.map
|
package/dist/ToastsPlugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToastsPlugin.js","sources":["../src/plugins/ToastsPlugin.ts"],"sourcesContent":["import { App, createVNode, h, Plugin, render } from 'vue';\n\nimport Toasts from '../components/Toasts/Toasts.vue';\n\nexport interface ToastsPluginOptions {\n mountNodeClass?: string;\n mountNodeId?: string;\n}\n\nexport default <Plugin>{\n install(app: App, options?: ToastsPluginOptions) {\n const mountNodeId = options?.mountNodeId || 'stash-toasts-mount-node';\n let mountNode = document.getElementById(mountNodeId);\n\n if (!mountNode) {\n mountNode = document.createElement('div');\n mountNode.id = mountNodeId;\n }\n\n if (options?.mountNodeClass) {\n mountNode.classList.add(options.mountNodeClass);\n }\n\n const vNode = createVNode(h(Toasts));\n document.body.appendChild(mountNode);\n vNode.appContext = app._context;\n\n render(vNode, mountNode);\n },\n};\n"],"names":["ToastsPlugin","app","options","mountNodeId","mountNode","vNode","createVNode","h","Toasts","render"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToastsPlugin.js","sources":["../src/plugins/ToastsPlugin.ts"],"sourcesContent":["import { App, createVNode, h, Plugin, render } from 'vue';\n\nimport Toasts from '../components/Toasts/Toasts.vue';\n\nexport interface ToastsPluginOptions {\n mountNodeClass?: string;\n mountNodeId?: string;\n}\n\nexport default <Plugin>{\n install(app: App, options?: ToastsPluginOptions) {\n const mountNodeId = options?.mountNodeId || 'stash-toasts-mount-node';\n let mountNode = document.getElementById(mountNodeId);\n\n if (!mountNode) {\n mountNode = document.createElement('div');\n mountNode.id = mountNodeId;\n }\n\n if (options?.mountNodeClass) {\n mountNode.classList.add(options.mountNodeClass);\n }\n\n const vNode = createVNode(h(Toasts));\n document.body.appendChild(mountNode);\n vNode.appContext = app._context;\n\n render(vNode, mountNode);\n },\n};\n"],"names":["ToastsPlugin","app","options","mountNodeId","mountNode","vNode","createVNode","h","Toasts","render"],"mappings":";;;;;;;;;;;;AASA,MAAuBA,IAAA;AAAA,EACrB,QAAQC,GAAUC,GAA+B;AACzC,UAAAC,KAAcD,KAAA,gBAAAA,EAAS,gBAAe;AACxC,QAAAE,IAAY,SAAS,eAAeD,CAAW;AAEnD,IAAKC,MACSA,IAAA,SAAS,cAAc,KAAK,GACxCA,EAAU,KAAKD,IAGbD,KAAA,QAAAA,EAAS,kBACDE,EAAA,UAAU,IAAIF,EAAQ,cAAc;AAGhD,UAAMG,IAAQC,EAAYC,EAAEC,CAAM,CAAC;AAC1B,aAAA,KAAK,YAAYJ,CAAS,GACnCC,EAAM,aAAaJ,EAAI,UAEvBQ,EAAOJ,GAAOD,CAAS;AAAA,EACzB;AACF;"}
|