@eturnity/eturnity_reusable_components 9.37.9-ATE-23.1 → 9.37.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eturnity/eturnity_reusable_components",
3
- "version": "9.37.9-ATE-23.1",
3
+ "version": "9.37.9",
4
4
  "files": [
5
5
  "dist",
6
6
  "src"
@@ -75,6 +75,7 @@
75
75
  "eslint-plugin-vue": "9.14.1",
76
76
  "identity-obj-proxy": "3.0.0",
77
77
  "jest": "26.6.3",
78
+ "jest-environment-jsdom": "26.6.2",
78
79
  "jest-styled-components": "7.2.0",
79
80
  "jsdom": "24.1.1",
80
81
  "prettier": "2.8.4",
@@ -587,7 +587,9 @@
587
587
  )
588
588
  this.$emit('dropdown-search', '')
589
589
  this.$nextTick(() => {
590
- this.focusSearchInput()
590
+ this.$refs.searchInput.$el.children[0].children[0].focus()
591
+ })
592
+ this.$nextTick(() => {
591
593
  this.scrollToItem()
592
594
  })
593
595
  }
@@ -630,7 +632,13 @@
630
632
  CLICK_OUTSIDE_CAPTURE
631
633
  )
632
634
  this.$emit('dropdown-search', '')
635
+ this.$nextTick(() => {
636
+ this.scrollToItem()
637
+ })
633
638
  this.$emit('toggle-dropdown-open', { close: false })
639
+ this.$nextTick(() => {
640
+ this.$refs.searchInput.$el.children[0].children[1].focus()
641
+ })
634
642
  } else {
635
643
  document.removeEventListener(
636
644
  'click',
@@ -646,10 +654,6 @@
646
654
  this.toggleOpen()
647
655
  }
648
656
  },
649
- focusSearchInput() {
650
- const input = this.$refs.searchInput?.$el.querySelector('input')
651
- input?.focus({ preventScroll: true })
652
- },
653
657
  scrollToItem() {
654
658
  if (this.$refs.optionsContainer) {
655
659
  this.$refs.optionsContainer.$el.scrollIntoView({
@@ -1,6 +1,5 @@
1
1
  /* eslint-disable */
2
2
  import { mount } from '@vue/test-utils'
3
- import { h, nextTick, ref } from 'vue'
4
3
  import TableDropdown from './index.vue'
5
4
  import SearchInput from '@/components/inputs/searchInput'
6
5
  import InputText from '@/components/inputs/inputText'
@@ -59,9 +58,7 @@ describe('TableDropdown', () => {
59
58
 
60
59
  it('renders a template link with the value for a filled template item', () => {
61
60
  const wrapper = mountDropdown({
62
- tableItems: [
63
- { type: 'template', value: 'My Template', row: { id: 2 } },
64
- ],
61
+ tableItems: [{ type: 'template', value: 'My Template', row: { id: 2 } }],
65
62
  })
66
63
  expect(wrapper.text()).toContain('My Template')
67
64
  expect(wrapper.findComponent(MainButton).exists()).toBe(false)
@@ -133,74 +130,6 @@ describe('TableDropdown', () => {
133
130
  })
134
131
  })
135
132
 
136
- describe('opening: focus and scroll', () => {
137
- let scrollIntoView
138
- let focus
139
-
140
- // The dropdown lives in a parent that owns `isOpen`, so one click runs both
141
- // toggleOpen and the isOpen watcher, exactly as it does in the app.
142
- const mountControlled = (props = {}) => {
143
- const isOpen = ref(false)
144
- return mount({
145
- setup() {
146
- return () =>
147
- h(TableDropdown, {
148
- colSpan: 2,
149
- tableItems: [{ type: 'text', value: 'Selected Item' }],
150
- optionItems: [
151
- { display_name: 'Item 1', company_item_number: '123' },
152
- { display_name: 'Item 2', company_item_number: '456' },
153
- ],
154
- optionsDisplay: ['display_name', 'company_item_number'],
155
- ...props,
156
- isOpen: isOpen.value,
157
- onToggleDropdownOpen: ({ close }) => {
158
- isOpen.value = !close
159
- },
160
- })
161
- },
162
- })
163
- }
164
-
165
- const open = async (wrapper) => {
166
- await wrapper.findComponent(TableDropdown).trigger('click')
167
- await nextTick()
168
- await nextTick()
169
- }
170
-
171
- beforeEach(() => {
172
- scrollIntoView = jest.fn()
173
- Element.prototype.scrollIntoView = scrollIntoView
174
- focus = jest.spyOn(HTMLInputElement.prototype, 'focus')
175
- })
176
-
177
- afterEach(() => {
178
- focus.mockRestore()
179
- })
180
-
181
- it('focuses the search input without letting focus scroll the page', async () => {
182
- const wrapper = mountControlled()
183
- await open(wrapper)
184
-
185
- expect(focus).toHaveBeenCalledTimes(1)
186
- expect(focus).toHaveBeenCalledWith({ preventScroll: true })
187
- expect(focus.mock.instances[0]).toBe(
188
- wrapper.findComponent(SearchInput).find('input').element
189
- )
190
- })
191
-
192
- it('scrolls the options container into view once, smoothly', async () => {
193
- const wrapper = mountControlled()
194
- await open(wrapper)
195
-
196
- expect(scrollIntoView).toHaveBeenCalledTimes(1)
197
- expect(scrollIntoView).toHaveBeenCalledWith({
198
- behavior: 'smooth',
199
- block: 'center',
200
- })
201
- })
202
- })
203
-
204
133
  describe('interactions', () => {
205
134
  it('emits toggle-dropdown-open with close:true when an open row is clicked', async () => {
206
135
  const wrapper = mountDropdown({ isOpen: true })