Skip to content

Commit f846aea

Browse files
authored
Merge pull request #169 from ownego/dev
Migrate 10.4.1
2 parents b1a220e + eae5545 commit f846aea

File tree

7 files changed

+71
-13
lines changed

7 files changed

+71
-13
lines changed

.storybook/stories/GetStarted.stories.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import { Meta } from '@storybook/addon-docs';
2424

2525
Polaris Vue by Ownego is a component library for [Vue 3](https://vuejs.org/) based on [Shopify Polaris style guide](https://polaris.shopify.com/). We try to keep the package light-weight and easy to use (mostly similar with original Polaris Library).
2626

27-
**Follow Polaris React version:** [10.3.0](https://github.com/Shopify/polaris/releases/tag/%40shopify%2Fpolaris%4010.3.0) - Migrated date: *Sep 20th, 2022*.
27+
**Follow Polaris React version:** [10.4.1](https://github.com/Shopify/polaris/releases/tag/%40shopify%2Fpolaris%4010.4.1) - Migrated date: *Oct 5th, 2022*.
2828

2929
<a href="https://github.com/ownego/polaris-vue"><img src="https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white" alt="Github"/></a>
3030

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Polaris Vue by Ownego only supports **Vue 3.0+**.
55
Polaris Vue based on [Shopify Polaris style guide](https://polaris.shopify.com/), built especially for Vue 3.
66
We're trying to make it mostly close with Shopify style guide and get a better performance.
77

8-
**Follow Polaris React version:** [10.3.0](https://github.com/Shopify/polaris/releases/tag/%40shopify%2Fpolaris%4010.3.0) - Migrated date: *Sep 20th, 2022*.
8+
**Follow Polaris React version:** [10.4.1](https://github.com/Shopify/polaris/releases/tag/%40shopify%2Fpolaris%4010.4.1) - Migrated date: *Oct 5th, 2022*.
99

1010
<br/>
1111

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@ownego/polaris-vue",
3-
"version": "1.1.4",
4-
"polaris_version": "10.3.0",
3+
"version": "1.1.5",
4+
"polaris_version": "10.4.1",
55
"description": "Shopify Polaris UI library for Vue 3",
66
"author": "Ownego Team",
77
"keywords": [

src/classes/IndexTable.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"IndexTable":"Polaris-IndexTable","LoadingContainer-enter":"Polaris-IndexTable__LoadingContainer--enter","LoadingContainer-enter-active":"Polaris-IndexTable--loadingContainerEnterActive","LoadingContainer-exit":"Polaris-IndexTable__LoadingContainer--exit","LoadingContainer-exit-active":"Polaris-IndexTable--loadingContainerExitActive","LoadingPanel":"Polaris-IndexTable__LoadingPanel","LoadingPanelRow":"Polaris-IndexTable__LoadingPanelRow","LoadingPanelText":"Polaris-IndexTable__LoadingPanelText","Table":"Polaris-IndexTable__Table","Table-scrolling":"Polaris-IndexTable__Table--scrolling","TableCell-first":"Polaris-IndexTable__TableCell--first","TableCell":"Polaris-IndexTable__TableCell","TableHeading-first":"Polaris-IndexTable__TableHeading--first","TableHeading-second":"Polaris-IndexTable__TableHeading--second","Table-unselectable":"Polaris-IndexTable__Table--unselectable","TableRow":"Polaris-IndexTable__TableRow","TableRow-unclickable":"Polaris-IndexTable__TableRow--unclickable","statusSuccess":"Polaris-IndexTable--statusSuccess","statusSubdued":"Polaris-IndexTable--statusSubdued","TableRow-hovered":"Polaris-IndexTable__TableRow--hovered","TableRow-selected":"Polaris-IndexTable__TableRow--selected","TableRow-subdued":"Polaris-IndexTable__TableRow--subdued","TableRow-disabled":"Polaris-IndexTable__TableRow--disabled","TableHeading":"Polaris-IndexTable__TableHeading","TableHeading-sortable":"Polaris-IndexTable__TableHeading--sortable","TableHeading-flush":"Polaris-IndexTable__TableHeading--flush","TableHeadingSortButton":"Polaris-IndexTable__TableHeadingSortButton","TableHeadingSortIcon":"Polaris-IndexTable__TableHeadingSortIcon","TableHeadingSortIcon-visible":"Polaris-IndexTable__TableHeadingSortIcon--visible","ColumnHeaderCheckboxWrapper":"Polaris-IndexTable__ColumnHeaderCheckboxWrapper","FirstStickyHeaderElement":"Polaris-IndexTable__FirstStickyHeaderElement","TableHeading-unselectable":"Polaris-IndexTable__TableHeading--unselectable","TableCell-flush":"Polaris-IndexTable__TableCell--flush","Table-sticky-scrolling":"Polaris-IndexTable--tableStickyScrolling","TableHeading-last":"Polaris-IndexTable__TableHeading--last","Table-sticky-last":"Polaris-IndexTable--tableStickyLast","StickyTable":"Polaris-IndexTable__StickyTable","StickyTableHeader":"Polaris-IndexTable__StickyTableHeader","StickyTableHeader-isSticky":"Polaris-IndexTable__StickyTableHeader--isSticky","StickyTableColumnHeader":"Polaris-IndexTable__StickyTableColumnHeader","StickyTableColumnHeader-isScrolling":"Polaris-IndexTable__StickyTableColumnHeader--isScrolling","StickyTableHeadings":"Polaris-IndexTable__StickyTableHeadings","StickyTableHeading-second":"Polaris-IndexTable__StickyTableHeading--second","unselectable":"Polaris-IndexTable--unselectable","StickyTableHeading-second-scrolling":"Polaris-IndexTable--stickyTableHeadingSecondScrolling","ScrollLeft":"Polaris-IndexTable__ScrollLeft","ScrollRight":"Polaris-IndexTable__ScrollRight","ScrollRight-onboarding":"Polaris-IndexTable__ScrollRight--onboarding","BulkActionsWrapper":"Polaris-IndexTable__BulkActionsWrapper","ScrollBarContainer":"Polaris-IndexTable__ScrollBarContainer","scrollBarContainerCondensed":"Polaris-IndexTable--scrollBarContainerCondensed","scrollBarContainerHidden":"Polaris-IndexTable--scrollBarContainerHidden","ScrollBar":"Polaris-IndexTable__ScrollBar","disableTextSelection":"Polaris-IndexTable--disableTextSelection","selectMode":"Polaris-IndexTable--selectMode","EmptySearchResultWrapper":"Polaris-IndexTable__EmptySearchResultWrapper","condensedRow":"Polaris-IndexTable--condensedRow","CondensedList":"Polaris-IndexTable__CondensedList","HeaderWrapper":"Polaris-IndexTable__HeaderWrapper","StickyTable-condensed":"Polaris-IndexTable__StickyTable--condensed","StickyTableHeader-condensed":"Polaris-IndexTable__StickyTableHeader--condensed","ScrollBarContent":"Polaris-IndexTable__ScrollBarContent"}
1+
{"IndexTable":"Polaris-IndexTable","LoadingContainer-enter":"Polaris-IndexTable__LoadingContainer--enter","LoadingContainer-enter-active":"Polaris-IndexTable--loadingContainerEnterActive","LoadingContainer-exit":"Polaris-IndexTable__LoadingContainer--exit","LoadingContainer-exit-active":"Polaris-IndexTable--loadingContainerExitActive","LoadingPanel":"Polaris-IndexTable__LoadingPanel","LoadingPanelRow":"Polaris-IndexTable__LoadingPanelRow","LoadingPanelText":"Polaris-IndexTable__LoadingPanelText","Table":"Polaris-IndexTable__Table","Table-scrolling":"Polaris-IndexTable__Table--scrolling","TableCell-first":"Polaris-IndexTable__TableCell--first","TableCell":"Polaris-IndexTable__TableCell","TableHeading-first":"Polaris-IndexTable__TableHeading--first","TableHeading-second":"Polaris-IndexTable__TableHeading--second","Table-sticky":"Polaris-IndexTable__Table--sticky","Table-unselectable":"Polaris-IndexTable__Table--unselectable","TableRow":"Polaris-IndexTable__TableRow","TableRow-unclickable":"Polaris-IndexTable__TableRow--unclickable","statusSuccess":"Polaris-IndexTable--statusSuccess","statusSubdued":"Polaris-IndexTable--statusSubdued","TableRow-hovered":"Polaris-IndexTable__TableRow--hovered","TableRow-selected":"Polaris-IndexTable__TableRow--selected","TableRow-subdued":"Polaris-IndexTable__TableRow--subdued","TableRow-disabled":"Polaris-IndexTable__TableRow--disabled","TableHeading":"Polaris-IndexTable__TableHeading","TableHeading-sortable":"Polaris-IndexTable__TableHeading--sortable","TableHeading-flush":"Polaris-IndexTable__TableHeading--flush","TableHeadingSortButton":"Polaris-IndexTable__TableHeadingSortButton","TableHeadingSortIcon":"Polaris-IndexTable__TableHeadingSortIcon","TableHeadingSortIcon-visible":"Polaris-IndexTable__TableHeadingSortIcon--visible","ColumnHeaderCheckboxWrapper":"Polaris-IndexTable__ColumnHeaderCheckboxWrapper","FirstStickyHeaderElement":"Polaris-IndexTable__FirstStickyHeaderElement","TableHeading-unselectable":"Polaris-IndexTable__TableHeading--unselectable","TableCell-flush":"Polaris-IndexTable__TableCell--flush","Table-sticky-scrolling":"Polaris-IndexTable--tableStickyScrolling","TableHeading-last":"Polaris-IndexTable__TableHeading--last","Table-sticky-last":"Polaris-IndexTable--tableStickyLast","StickyTable":"Polaris-IndexTable__StickyTable","StickyTableHeader":"Polaris-IndexTable__StickyTableHeader","StickyTableHeader-isSticky":"Polaris-IndexTable__StickyTableHeader--isSticky","StickyTableColumnHeader":"Polaris-IndexTable__StickyTableColumnHeader","StickyTableColumnHeader-isScrolling":"Polaris-IndexTable__StickyTableColumnHeader--isScrolling","StickyTableHeadings":"Polaris-IndexTable__StickyTableHeadings","StickyTableHeading-second":"Polaris-IndexTable__StickyTableHeading--second","unselectable":"Polaris-IndexTable--unselectable","StickyTableHeading-second-scrolling":"Polaris-IndexTable--stickyTableHeadingSecondScrolling","ScrollLeft":"Polaris-IndexTable__ScrollLeft","ScrollRight":"Polaris-IndexTable__ScrollRight","ScrollRight-onboarding":"Polaris-IndexTable__ScrollRight--onboarding","BulkActionsWrapper":"Polaris-IndexTable__BulkActionsWrapper","ScrollBarContainer":"Polaris-IndexTable__ScrollBarContainer","scrollBarContainerCondensed":"Polaris-IndexTable--scrollBarContainerCondensed","scrollBarContainerHidden":"Polaris-IndexTable--scrollBarContainerHidden","ScrollBar":"Polaris-IndexTable__ScrollBar","disableTextSelection":"Polaris-IndexTable--disableTextSelection","selectMode":"Polaris-IndexTable--selectMode","EmptySearchResultWrapper":"Polaris-IndexTable__EmptySearchResultWrapper","condensedRow":"Polaris-IndexTable--condensedRow","CondensedList":"Polaris-IndexTable__CondensedList","HeaderWrapper":"Polaris-IndexTable__HeaderWrapper","StickyTable-condensed":"Polaris-IndexTable__StickyTable--condensed","StickyTableHeader-condensed":"Polaris-IndexTable__StickyTableHeader--condensed","ScrollBarContent":"Polaris-IndexTable__ScrollBarContent"}

src/components/IndexTable/IndexTableBase.vue

Lines changed: 55 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ div(:class="styles.IndexTable")
119119
div(:class="stickyColumnHeaderClassNames")
120120
div(
121121
:class="styles.TableHeading",
122-
:key="headings[0].title",
122+
:key="getHeadingKey(headings[0])",
123123
:style="stickyColumnHeaderStyle",
124124
data-index-table-sticky-heading="true",
125125
)
@@ -174,7 +174,7 @@ div(:class="styles.IndexTable")
174174
)
175175
div(
176176
v-for="heading, index in headings",
177-
:key="heading.title",
177+
:key="getHeadingKey(heading)",
178178
:class="stickyHeadingClassName(index)",
179179
:style="renderStickyHeading(index)",
180180
data-index-table-sticky-heading="true",
@@ -205,7 +205,7 @@ div(:class="styles.IndexTable")
205205
tr
206206
template(
207207
v-for="heading, index in headings",
208-
:key="`${heading.title}-${index}`",
208+
:key="getHeadingKey(heading)",
209209
)
210210
th(
211211
v-if="index === 0 && selectable",
@@ -365,6 +365,7 @@ const isSmallScreenSelectable = ref(false);
365365
const stickyWrapper = ref<HTMLElement | null>(null);
366366
const hideScrollContainer = ref(false);
367367
const smallScreen = ref(isBreakpointsXS());
368+
const canFitStickyColumn = ref(true);
368369
369370
const tableHeadings = ref<HTMLElement[]>([]);
370371
const stickyTableHeadings = ref<HTMLElement[]>([]);
@@ -384,6 +385,34 @@ const scrollContainerRef = computed(() => {
384385
&& scrollableContainerElement.value.scrollableContainerRef;
385386
});
386387
388+
const handleCanFitStickyColumn = () => {
389+
if (!scrollableContainerElement.value || !tableHeadings.value.length) {
390+
return;
391+
}
392+
const scrollableRect =
393+
(scrollableContainerElement.value as any).getBoundingClientRect();
394+
const checkboxColumnWidth = selectable
395+
? tableHeadings.value[0].getBoundingClientRect().width
396+
: 0;
397+
const firstStickyColumnWidth =
398+
tableHeadings.value[selectable ? 1 : 0].getBoundingClientRect().width;
399+
const lastColumnIsNotTheFirst = selectable
400+
? tableHeadings.value.length > 2
401+
: 1;
402+
// Don't consider the last column in the calculations if it's not sticky
403+
const lastStickyColumnWidth =
404+
props.lastColumnSticky && lastColumnIsNotTheFirst
405+
? tableHeadings.value[
406+
tableHeadings.value.length - 1
407+
].getBoundingClientRect().width
408+
: 0;
409+
// Secure some space for the remaining columns to be visible
410+
const restOfContentMinWidth = 100;
411+
412+
canFitStickyColumn.value = scrollableRect.width >
413+
firstStickyColumnWidth + checkboxColumnWidth + lastStickyColumnWidth + restOfContentMinWidth;
414+
};
415+
387416
const tableBodyRef = (node) => {
388417
if (node !== null && !tableInitialized.value) {
389418
tableInitialized.value = true;
@@ -517,6 +546,7 @@ const handleResize = () => {
517546
debounceResizeTableScrollbar();
518547
handleCanScrollRight();
519548
handleIsSmallScreen();
549+
handleCanFitStickyColumn();
520550
};
521551
522552
const handleScrollContainerScroll = (canScrollLeft, tmpCanScrollRight) => {
@@ -617,6 +647,11 @@ watch(
617647
checkIsSmallScreenSelectable,
618648
);
619649
650+
watch(
651+
() => [tableInitialized.value],
652+
handleCanFitStickyColumn,
653+
)
654+
620655
const hasBulkActions = computed(() => Boolean(
621656
(props.promotedBulkActions && props.promotedBulkActions.length > 0) ||
622657
(props.bulkActions && props.bulkActions.length > 0),
@@ -739,8 +774,11 @@ const tableClassNames = computed(() => classNames(
739774
selectMode.value && styles.disableTextSelection,
740775
selectMode.value && shouldShowBulkActions.value && styles.selectMode,
741776
!selectable?.value && styles['Table-unselectable'],
742-
props.lastColumnSticky && styles['Table-sticky-last'],
743-
props.lastColumnSticky && canScrollRight && styles['Table-sticky-scrolling'],
777+
canFitStickyColumn.value && props.lastColumnSticky && styles['Table-sticky-last'],
778+
canFitStickyColumn.value && styles['Table-sticky'],
779+
canFitStickyColumn.value &&
780+
props.lastColumnSticky &&
781+
canScrollRight.value && styles['Table-sticky-scrolling'],
744782
));
745783
746784
const handleSelectModeToggle = (val: boolean) => {
@@ -764,6 +802,18 @@ const headingContentClassName = (heading: IndexTableHeading, index: number) => {
764802
);
765803
};
766804
805+
const getHeadingKey = (heading: IndexTableHeading): string => {
806+
if (heading.id) {
807+
return heading.id;
808+
}
809+
810+
if (typeof heading.title === 'string') {
811+
return heading.title;
812+
}
813+
814+
return '';
815+
}
816+
767817
const stickyPositioningStyle = (index: number) => {
768818
return selectable?.value !== false &&
769819
isSecond(index) &&

src/components/Tooltip/Tooltip.vue

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ const props = withDefaults(defineProps<Props>(), {
6666
active: false,
6767
});
6868
69+
const emits = defineEmits<{
70+
(e: 'close'): void;
71+
(e: 'open'): void;
72+
}>();
73+
6974
const active = ref<boolean>(props.active);
7075
7176
const mouseEntered = ref<boolean>(false);
@@ -104,14 +109,17 @@ watch(() => activatorContainer.value, () => {
104109
105110
const handleBlur = () => {
106111
active.value = false;
112+
emits('close');
107113
}
108114
109115
const handleFocus = () => {
110116
active.value = true;
117+
emits('open');
111118
}
112119
113120
const handleKeyUp = (event: KeyboardEvent) => {
114-
if (event.key !== Key.Escape) {return;}
121+
if (event.key !== Key.Escape) { return; }
122+
emits('close');
115123
handleBlur();
116124
}
117125

yarn.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9108,8 +9108,8 @@ pnp-webpack-plugin@1.6.4:
91089108
ts-pnp "^1.1.6"
91099109

91109110
"polaris@https://github.com/juzser/polaris.git":
9111-
version "10.3.0"
9112-
resolved "https://github.com/juzser/polaris.git#e0ac963ffcf7bc30bcb6902f88894de976d0f8db"
9111+
version "10.4.1"
9112+
resolved "https://github.com/juzser/polaris.git#998d0ca70f2c4828a05e4f31f84612c0ac09b013"
91139113

91149114
polished@^4.2.2:
91159115
version "4.2.2"

0 commit comments

Comments
 (0)