@@ -34,11 +34,11 @@ li(:class="listItemClassName", :dataHref="dataHref")
3434 )
3535 div( :class ="containerClassName" , :id ="id" )
3636 div(
37- v-if ="hasSlot(slots.media) || context.selectable " ,
37+ v-if ="hasSlot(slots.media) || isSelectable " ,
3838 :class ="ownedClassName" ,
3939 )
4040 div(
41- v-if ="context.selectable " ,
41+ v-if ="isSelectable " ,
4242 :class ="styles.Handle" ,
4343 @click ="handleLargerSelectionArea" ,
4444 )
@@ -52,7 +52,7 @@ li(:class="listItemClassName", :dataHref="dataHref")
5252 :label ="checkboxAccessibilityLabel" ,
5353 labelHidden ,
5454 v-model ="selected" ,
55- :disabled ="context. loading" ,
55+ :disabled ="loading" ,
5656 )
5757 div(
5858 v-if ="hasSlot(slots.media)" ,
@@ -61,7 +61,7 @@ li(:class="listItemClassName", :dataHref="dataHref")
6161 slot( name ="media" )
6262 div( v-if ="hasSlot(slots.default)" , :class ="styles.Content" )
6363 slot
64- template( v-if ="shortcutActions && !context. loading" )
64+ template( v-if ="shortcutActions && !loading" )
6565 div(
6666 v-if ="persistActions" ,
6767 :class ="styles.Actions" ,
@@ -107,7 +107,7 @@ li(:class="listItemClassName", :dataHref="dataHref")
107107</template >
108108
109109<script setup lang="ts">
110- import { computed , inject , onUpdated , ref , useSlots , watch } from ' vue' ;
110+ import { computed , inject , ref , useSlots , watch } from ' vue' ;
111111import { classNames , variationName } from ' polaris/polaris-react/src/utilities/css' ;
112112import { UseI18n } from ' @/use' ;
113113import { hasSlot } from ' @/utilities/has-slot' ;
@@ -164,24 +164,33 @@ const i18n = UseI18n();
164164const getUniqueCheckboxID = globalIdGeneratorFactory (' ResourceListItemCheckbox' );
165165const getUniqueOverlayID = globalIdGeneratorFactory (' ResourceListItemOverlay' );
166166
167- const context = inject (' ResourceListContext' , {}) as ResourceListContextType ;
167+ const {
168+ selectedItems,
169+ selectable,
170+ selectMode,
171+ loading,
172+ resourceName,
173+ onSelectionChange,
174+ } = inject (' ResourceListContext' , {}) as ResourceListContextType ;
168175
169176const actionsMenuVisible = ref (false );
170177const focused = ref (false );
171178const focusedInner = ref (false );
172- const selected = ref (isSelected (props .id , context . selectedItems ?.value ));
179+ const selected = ref (isSelected (props .id , selectedItems ?.value ));
173180
174181const checkboxId = getUniqueCheckboxID ();
175182const overlayId = getUniqueOverlayID ();
176183const node = ref <HTMLDivElement | null >(null );
177184const buttonOverlay = ref <HTMLButtonElement | null >(null );
178185
186+ const isSelectable = computed (() => selectable ?.value );
187+
179188const className = computed (() => classNames (
180189 styles .ResourceItem ,
181190 focused .value && styles .focused ,
182- context . selectable ? .value && styles .selectable ,
191+ isSelectable .value && styles .selectable ,
183192 selected .value && styles .selected ,
184- context . selectMode ?.value && styles .selectMode ,
193+ selectMode ?.value && styles .selectMode ,
185194 props .persistActions && styles .persistActions ,
186195 focusedInner .value && styles .focusedInner ,
187196));
@@ -213,17 +222,17 @@ const containerClassName = computed(() => classNames(
213222 styles [variationName (' alignment' , props .verticalAlignment )],
214223));
215224
216- const tabIndex = computed (() => context . loading ? - 1 : 0 );
225+ const tabIndex = computed (() => loading ? - 1 : 0 );
217226
218227const ariaLabel = computed (() => {
219228 return props .accessibilityLabel ||
220229 i18n .translate (' Polaris.ResourceList.Item.viewItem' , {
221- itemName: props .name || (context . resourceName && context . resourceName .singular ) || ' ' ,
230+ itemName: props .name || (resourceName && resourceName .singular ) || ' ' ,
222231 });
223232});
224233
225234watch (
226- () => context . selectedItems ?.value ,
235+ () => selectedItems ?.value ,
227236 (newVal , oldVal ) => {
228237 if (newVal !== oldVal ) {
229238 selected .value = isSelected (props .id , newVal );
@@ -277,14 +286,14 @@ const handleSelection = (value: boolean, shiftKey: boolean) => {
277286 sortOrder,
278287 } = props ;
279288
280- if (! id || ! context . onSelectionChange ) {
289+ if (! id || ! onSelectionChange ) {
281290 return ;
282291 }
283292
284293 focused .value = value ;
285294 focusedInner .value = value ;
286295
287- context . onSelectionChange (value , id , sortOrder , shiftKey );
296+ onSelectionChange (value , id , sortOrder , shiftKey );
288297};
289298
290299const handleClick = (event : MouseEvent ) => {
@@ -294,7 +303,7 @@ const handleClick = (event: MouseEvent) => {
294303 const { ctrlKey, metaKey } = event ;
295304 const anchor = node .value && node .value .querySelector (' a' );
296305
297- if (context . selectMode ) {
306+ if (selectMode ) {
298307 handleLargerSelectionArea (event );
299308 return ;
300309 }
@@ -318,7 +327,7 @@ const handleClick = (event: MouseEvent) => {
318327const handleKeyUp = (event : KeyboardEvent ) => {
319328 const { key } = event ;
320329
321- if (key === ' Enter' && props .url && ! context . selectMode ) {
330+ if (key === ' Enter' && props .url && ! selectMode ) {
322331 emits (' click' , props .id );
323332 }
324333};
@@ -335,11 +344,11 @@ const stopPropagation = (e: Event) => {
335344 e .stopPropagation ();
336345};
337346
338- function isSelected(id : string , selectedItems ? : ResourceListSelectedItems ) {
347+ function isSelected(id : string , tmpSelectedItems ? : ResourceListSelectedItems ) {
339348 return Boolean (
340- selectedItems &&
341- ((Array .isArray (selectedItems ) && selectedItems .includes (id )) ||
342- selectedItems === SELECT_ALL_ITEMS ),
349+ tmpSelectedItems &&
350+ ((Array .isArray (tmpSelectedItems ) && tmpSelectedItems .includes (id )) ||
351+ tmpSelectedItems === SELECT_ALL_ITEMS ),
343352 );
344353}
345354 </script >
0 commit comments