sr-npm 1.2.12 → 1.2.14

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/backend/consts.js CHANGED
@@ -72,9 +72,6 @@ const TASKS = {
72
72
  }
73
73
  }
74
74
 
75
-
76
-
77
-
78
75
  const TASK_TYPE = {
79
76
  SCHEDULED: 'scheduled',
80
77
  EVENT: 'event',
@@ -92,10 +89,6 @@ const supportTeamsPageIds={
92
89
  VIDEO_TITLE: "#videoTitle",
93
90
  VIDEO_PLAYER: "#videoPlayer",
94
91
 
95
-
96
-
97
-
98
-
99
92
  RECENTLEY_ADDED_JOBS_ITEM: "#recentleyAddedJobsItem",
100
93
  JOB_LOCATION: "#jobLocation",
101
94
  JOB_TITLE: "#jobTitle",
@@ -137,12 +130,13 @@ const supportTeamsPageSections={
137
130
  VIDEO: "video",
138
131
  }
139
132
 
140
- module.exports = {
141
- TASKS_NAMES,
142
- TASK_TYPE,
143
- TASKS,
144
- QUERY_MAX_LIMIT,
145
- supportTeamsPageIds,
146
- LINKS,
147
- supportTeamsPageSections,
133
+
134
+ module.exports = {
135
+ TASKS_NAMES,
136
+ TASK_TYPE,
137
+ TASKS,
138
+ QUERY_MAX_LIMIT,
139
+ supportTeamsPageIds,
140
+ LINKS,
141
+ supportTeamsPageSections,
148
142
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sr-npm",
3
- "version": "1.2.12",
3
+ "version": "1.2.14",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -29,6 +29,10 @@ async function careersMultiBoxesPageOnReady(_$w,urlParams) {
29
29
  loadSelectedValuesRepeater(_$w);
30
30
  bindSearchInput(_$w);
31
31
  loadPaginationButtons(_$w);
32
+
33
+ if (await window.formFactor() === "Mobile") {
34
+ handleFilterInMobile(_$w);
35
+ }
32
36
 
33
37
  await handleUrlParams(_$w, urlParams);
34
38
  _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CLEAR_ALL_BUTTON_ID).onClick(async () => {
@@ -52,6 +56,41 @@ async function clearAll(_$w) {
52
56
  }
53
57
  }
54
58
 
59
+ function handleFilterInMobile(_$w) {
60
+ const searchResultsSelectors = [
61
+ CAREERS_PAGE_SELECTORS.RESULT_BOX,
62
+ CAREERS_PAGE_SELECTORS.PAGINATION_BTN,
63
+ CAREERS_PAGE_SELECTORS.HEAD_BTNS,
64
+ CAREERS_PAGE_SELECTORS.SELECTED_VALUES_REPEATER,
65
+ CAREERS_PAGE_SELECTORS.BUTTOM_TXT,
66
+ CAREERS_PAGE_SELECTORS.SECTION_24,
67
+ CAREERS_PAGE_SELECTORS.SECTION_3,
68
+ CAREERS_PAGE_SELECTORS.LINE_3,
69
+ CAREERS_PAGE_SELECTORS.FILTER_ICON];
70
+
71
+ _$w(CAREERS_PAGE_SELECTORS.FILTER_ICON).onClick(()=>{
72
+ _$w(CAREERS_PAGE_SELECTORS.FILTER_BOX).expand();
73
+ searchResultsSelectors.forEach(selector => {
74
+ _$w(selector).collapse();
75
+ });
76
+ });
77
+
78
+ const exitFilterBox = () => {
79
+ _$w(CAREERS_PAGE_SELECTORS.FILTER_BOX).collapse();
80
+ searchResultsSelectors.forEach(selector => {
81
+ _$w(selector).expand();
82
+ });
83
+ }
84
+
85
+ _$w(CAREERS_PAGE_SELECTORS.EXIT_BUTTON).onClick(()=>{
86
+ exitFilterBox();
87
+ });
88
+
89
+ _$w(CAREERS_PAGE_SELECTORS.REFINE_SEARCH_BUTTON).onClick(()=>{
90
+ exitFilterBox();
91
+ });
92
+ }
93
+
55
94
 
56
95
  async function handleUrlParams(_$w,urlParams) {
57
96
  try {
@@ -499,12 +538,13 @@ async function secondarySearch(_$w,query) {
499
538
  }
500
539
  function bindSearchInput(_$w) {
501
540
  try {
502
- bindPrimarySearch(_$w,allvaluesobjects,alljobs);
541
+ bindPrimarySearch(_$w,allvaluesobjects,alljobs);
542
+
543
+ const secondarySearchDebounced = debounce(async () => {
544
+ const query = (_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.SECONDARY_SEARCH_INPUT).value || '').toLowerCase().trim();
545
+ await secondarySearch(_$w, query);
546
+ }, 150);
503
547
 
504
- const secondarySearchDebounced = debounce(async () => {
505
- const query = (_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.SECONDARY_SEARCH_INPUT).value || '').toLowerCase().trim();
506
- await secondarySearch(_$w, query);
507
- }, 150);
508
548
 
509
549
  _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.SECONDARY_SEARCH_INPUT).onInput(secondarySearchDebounced);
510
550
 
@@ -5,12 +5,10 @@ const { query,queryParams,onChange} = require("wix-location-frontend");
5
5
  const { location } = require("@wix/site-location");
6
6
  const { COLLECTIONS } = require('../backend/collectionConsts');
7
7
  const { careersMultiBoxesPageOnReady } = require('./careersMultiBoxesPage');
8
-
9
- const {
10
- debounce,
11
- getFilter,
12
- } = require('../public/filterUtils');
8
+ const { debounce, getFilter} = require('../public/filterUtils');
9
+ const { CAREERS_PAGE_SELECTORS, FILTER_FIELDS } = require('../public/selectors');
13
10
  const { filterBrokenMarkers } = require('../public/utils');
11
+
14
12
  let currentLoadedItems =100;
15
13
  const itemsPerPage = 100;
16
14
  let allJobs=[]
@@ -27,41 +25,43 @@ const {
27
25
  let siteconfig;
28
26
 
29
27
  async function careersPageOnReady(_$w,thisObject=null,queryParams=null) {
30
- if(siteconfig===undefined) {
31
- const queryResult = await wixData.query(COLLECTIONS.SITE_CONFIGS).find();
32
- siteconfig = queryResult.items[0];
33
- }
28
+ if(siteconfig===undefined) {
29
+ const queryResult = await wixData.query(COLLECTIONS.SITE_CONFIGS).find();
30
+ siteconfig = queryResult.items[0];
31
+ }
34
32
 
35
- if(siteconfig.customFields==="true") {
36
- await careersMultiBoxesPageOnReady(_$w,queryParams);
37
- }
38
- else{
39
- console.log("queryParams: ", queryParams);
40
- const { page, keyWord, department, location,jobType,brand } = queryParams;
41
- queryPageVar=page;
42
- queryKeyWordVar=keyWord;
43
- queryDepartmentVar=department;
44
- queryLocationVar=location;
45
- queryJobTypeVar=jobType;
46
- queryBrandVar=brand;
47
- thisObjectVar=thisObject;
48
- allJobs=await getAllPositions();
49
- await activateAutoLoad(_$w);
50
- await bind(_$w);
51
- await init(_$w);
52
- await handleBrandDropdown(_$w);
53
- await handleUrlParams(_$w);
33
+ if(siteconfig.customFields==="true") {
34
+ await careersMultiBoxesPageOnReady(_$w,queryParams);
35
+ }
36
+ else{
37
+ console.log("queryParams: ", queryParams);
38
+ const { page, keyWord, department, location,jobType,brand } = queryParams;
39
+ queryPageVar=page;
40
+ queryKeyWordVar=keyWord;
41
+ queryDepartmentVar=department;
42
+ queryLocationVar=location;
43
+ queryJobTypeVar=jobType;
44
+ queryBrandVar=brand;
45
+ thisObjectVar=thisObject;
46
+ allJobs = await getAllPositions();
47
+
48
+ activateAutoLoad(_$w);
49
+ await bind(_$w);
50
+ init(_$w);
51
+ await handleBrandDropdown(_$w);
52
+ await handleUrlParams(_$w);
54
53
 
55
- }
56
- }
54
+ }
57
55
 
56
+
57
+ }
58
58
 
59
59
  function activateAutoLoad(_$w)
60
60
  {
61
- _$w("#jobsDataset").onReady(() => {
61
+ _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).onReady(() => {
62
62
  updateCount(_$w);
63
- _$w("#section2").onViewportEnter(() => {
64
- if (currentLoadedItems<_$w("#jobsDataset").getTotalCount()) {
63
+ _$w(CAREERS_PAGE_SELECTORS.FOOTER).onViewportEnter(() => {
64
+ if (currentLoadedItems<_$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).getTotalCount()) {
65
65
  loadMoreJobs(_$w);
66
66
  }
67
67
  else {
@@ -81,10 +81,12 @@ async function loadMoreJobs(_$w) {
81
81
  pageParamSet = Number(pageParamSet) + 1;
82
82
  }
83
83
  if (shouldLoad) {
84
- _$w("#jobsDataset").loadMore();
84
+ _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).loadMore();
85
85
  console.log("loading more jobs");
86
+
86
87
  currentLoadedItems = currentLoadedItems + itemsPerPage;
87
- const data = _$w("#positionsRepeater").data;
88
+ const data = _$w(CAREERS_PAGE_SELECTORS.POSITIONS_REPEATER).data;
89
+
88
90
  console.log("data length is : ", data.length);
89
91
  setPageParamInUrl();
90
92
  }
@@ -107,26 +109,26 @@ async function handleUrlParams(_$w) {
107
109
  if (queryKeyWordVar) {
108
110
  await handleKeyWordParam(_$w,queryKeyWordVar);
109
111
  }
110
- if (queryBrandVar && _$w('#dropdownBrand').isVisible) { //if it is not visible, ignore it
112
+ if (queryBrandVar && _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_BRAND).isVisible) { //if it is not visible, ignore it
111
113
  await handleBrandParam(_$w,queryBrandVar);
112
114
  }
113
- if (queryPageVar) {
114
- await handlePageParam(_$w);
115
- }
116
- if (queryDepartmentVar) {
117
- await handleDepartmentParam(_$w,queryDepartmentVar);
118
- }
119
- if (queryLocationVar) {
120
- await handleLocationParam(_$w,queryLocationVar);
121
- }
122
- if (queryJobTypeVar) {
123
- await handleJobTypeParam(_$w,queryJobTypeVar);
124
- }
115
+ if (queryPageVar) {
116
+ await handlePageParam(_$w);
117
+ }
118
+ if (queryDepartmentVar) {
119
+ await handleDepartmentParam(_$w,queryDepartmentVar);
120
+ }
121
+ if (queryLocationVar) {
122
+ await handleLocationParam(_$w,queryLocationVar);
123
+ }
124
+ if (queryJobTypeVar) {
125
+ await handleJobTypeParam(_$w,queryJobTypeVar);
126
+ }
125
127
  await applyFilters(_$w, true); // Skip URL update since we're handling initial URL params
126
128
  }
127
129
 
128
130
  async function handleKeyWordParam(_$w,keyWord) {
129
- _$w('#searchInput').value = keyWord;
131
+ _$w(CAREERS_PAGE_SELECTORS.SEARCH_INPUT).value = keyWord;
130
132
  // Use applyFilters to maintain consistency instead of directly setting filter
131
133
  }
132
134
 
@@ -146,18 +148,18 @@ async function handlePageParam(_$w) {
146
148
  //scrolls a bit to load the dataset data
147
149
  await window.scrollTo(0, 200,{scrollAnimation:false});
148
150
  for (let i = 2; i <= queryPageVar; i++) {
149
- await _$w("#jobsDataset").loadMore();
151
+ await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).loadMore();
150
152
  currentLoadedItems=currentLoadedItems+itemsPerPage
151
153
  }
152
154
  // the timeout is to wait for the repeater to render, then scroll to the last item.
153
155
  setTimeout(() => {
154
- const data = _$w("#positionsRepeater").data;
156
+ const data = _$w(CAREERS_PAGE_SELECTORS.POSITIONS_REPEATER).data;
155
157
  if (data && data.length > 0) {
156
158
  //the dataset each time it loads 100 items
157
159
  const lastIndex = data.length - itemsPerPage;
158
- _$w("#positionsRepeater").forEachItem(async ($item, itemData, index) => {
160
+ _$w(CAREERS_PAGE_SELECTORS.POSITIONS_REPEATER).forEachItem(async ($item, itemData, index) => {
159
161
  if (index === lastIndex) {
160
- await $item("#positionItem").scrollTo();
162
+ await $item(CAREERS_PAGE_SELECTORS.POSITION_ITEM).scrollTo();
161
163
  console.log("finishied scrolling inside handlePageParam")
162
164
  }
163
165
  });
@@ -168,40 +170,40 @@ async function handlePageParam(_$w) {
168
170
  }
169
171
 
170
172
  async function bind(_$w) {
171
- await _$w('#jobsDataset').onReady(async () => {
173
+ await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).onReady(async () => {
172
174
  await updateCount(_$w);
173
175
  await updateMapMarkers(_$w);
174
176
 
175
177
  });
176
178
 
177
179
  if (await window.formFactor() === "Mobile") {
178
- _$w('#dropdownsContainer').collapse();
180
+ _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_CONTAINER).collapse();
179
181
  }
180
182
 
181
183
  }
182
184
 
183
185
  function init(_$w) {
184
186
  const debouncedSearch = debounce(()=>applyFilters(_$w), 400,thisObjectVar);
185
- _$w('#searchInput').onInput(debouncedSearch);
186
- _$w('#searchInput').onBlur(()=>{
187
- if(searchInputBlurredFirstTime && _$w('#searchInput').value.trim() !== '')
187
+ _$w(CAREERS_PAGE_SELECTORS.SEARCH_INPUT).onInput(debouncedSearch);
188
+ _$w(CAREERS_PAGE_SELECTORS.SEARCH_INPUT).onBlur(()=>{
189
+ if(searchInputBlurredFirstTime && _$w(CAREERS_PAGE_SELECTORS.SEARCH_INPUT).value.trim() !== '')
188
190
  {
189
- _$w('#searchInput').focus();
191
+ _$w(CAREERS_PAGE_SELECTORS.SEARCH_INPUT).focus();
190
192
  searchInputBlurredFirstTime=false;
191
193
  }
192
194
  });
193
- _$w('#dropdownDepartment, #dropdownLocation, #dropdownJobType, #dropdownBrand').onChange(()=>{
195
+ _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_DEPARTMENT, CAREERS_PAGE_SELECTORS.DROPDOWN_LOCATION, CAREERS_PAGE_SELECTORS.DROPDOWN_JOB_TYPE, CAREERS_PAGE_SELECTORS.DROPDOWN_BRAND).onChange(()=>{
194
196
  console.log("dropdown onChange is triggered");
195
197
  applyFilters(_$w);
196
198
  });
197
- _$w('#resetFiltersButton, #clearSearch').onClick(()=>resetFilters(_$w));
199
+ _$w(CAREERS_PAGE_SELECTORS.RESET_FILTERS_BUTTON, CAREERS_PAGE_SELECTORS.CLEAR_SEARCH).onClick(()=>resetFilters(_$w));
198
200
 
199
- _$w('#openFiltersButton').onClick(()=>{
200
- _$w('#dropdownsContainer, #closeFiltersButton').expand();
201
+ _$w(CAREERS_PAGE_SELECTORS.OPEN_FILTERS_BUTTON).onClick(()=>{
202
+ _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_CONTAINER, CAREERS_PAGE_SELECTORS.CLOSE_FILTERS_BUTTON).expand();
201
203
  });
202
204
 
203
- _$w('#closeFiltersButton').onClick(()=>{
204
- _$w('#dropdownsContainer, #closeFiltersButton').collapse();
205
+ _$w(CAREERS_PAGE_SELECTORS.CLOSE_FILTERS_BUTTON).onClick(()=>{
206
+ _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_CONTAINER, CAREERS_PAGE_SELECTORS.CLOSE_FILTERS_BUTTON).collapse();
205
207
  });
206
208
 
207
209
  //URL onChange
@@ -220,7 +222,7 @@ async function handleBackAndForth(_$w){
220
222
  else{
221
223
  queryDepartmentVar=undefined;
222
224
  deletedParam=true;
223
- _$w('#dropdownDepartment').value = '';
225
+ _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_DEPARTMENT).value = '';
224
226
  }
225
227
  if(newQueryParams.location){
226
228
  queryLocationVar=newQueryParams.location;
@@ -228,7 +230,7 @@ async function handleBackAndForth(_$w){
228
230
  else{
229
231
  queryLocationVar=undefined;
230
232
  deletedParam=true
231
- _$w('#dropdownLocation').value = '';
233
+ _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_LOCATION).value = '';
232
234
  }
233
235
  if(newQueryParams.keyWord){
234
236
  queryKeyWordVar=newQueryParams.keyWord;
@@ -236,7 +238,7 @@ async function handleBackAndForth(_$w){
236
238
  else{
237
239
  queryKeyWordVar=undefined;
238
240
  deletedParam=true;
239
- _$w('#searchInput').value = '';
241
+ _$w(CAREERS_PAGE_SELECTORS.SEARCH_INPUT).value = '';
240
242
  }
241
243
  if(newQueryParams.jobType){
242
244
  queryJobTypeVar=newQueryParams.jobType;
@@ -244,16 +246,16 @@ async function handleBackAndForth(_$w){
244
246
  else{
245
247
  queryJobTypeVar=undefined;
246
248
  deletedParam=true;
247
- _$w('#dropdownJobType').value = '';
249
+ _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_JOB_TYPE).value = '';
248
250
  }
249
- if(_$w('#dropdownBrand').isVisible){
251
+ if(_$w(CAREERS_PAGE_SELECTORS.DROPDOWN_BRAND).isVisible){
250
252
  if(newQueryParams.brand){
251
253
  queryBrandVar=newQueryParams.brand;
252
254
  }
253
255
  else{
254
256
  queryBrandVar=undefined;
255
257
  deletedParam=true;
256
- _$w('#dropdownBrand').value = '';
258
+ _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_BRAND).value = '';
257
259
  }
258
260
  }
259
261
  await handleUrlParams(_$w);
@@ -263,11 +265,11 @@ async function handleBackAndForth(_$w){
263
265
  async function applyFilters(_$w, skipUrlUpdate = false) {
264
266
  console.log("applying filters");
265
267
  const dropdownFiltersMapping = [
266
- { elementId: '#dropdownDepartment', field: 'department', value: _$w('#dropdownDepartment').value },
267
- { elementId: '#dropdownLocation', field: 'cityText', value: _$w('#dropdownLocation').value },
268
- { elementId: '#dropdownJobType', field: 'remote', value: _$w('#dropdownJobType').value},
269
- { elementId: '#dropdownBrand', field: 'brand', value: _$w('#dropdownBrand').value},
270
- { elementId: '#searchInput', field: 'title', value: _$w('#searchInput').value }
268
+ { elementId: CAREERS_PAGE_SELECTORS.DROPDOWN_DEPARTMENT, field: 'department', value: _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_DEPARTMENT).value },
269
+ { elementId: CAREERS_PAGE_SELECTORS.DROPDOWN_LOCATION, field: 'cityText', value: _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_LOCATION).value },
270
+ { elementId: CAREERS_PAGE_SELECTORS.DROPDOWN_JOB_TYPE, field: 'remote', value: _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_JOB_TYPE).value},
271
+ { elementId: CAREERS_PAGE_SELECTORS.DROPDOWN_BRAND, field: 'brand', value: _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_BRAND).value},
272
+ { elementId: CAREERS_PAGE_SELECTORS.SEARCH_INPUT, field: 'title', value: _$w(CAREERS_PAGE_SELECTORS.SEARCH_INPUT).value }
271
273
  ];
272
274
  console.log("dropdownFiltersMapping: ", dropdownFiltersMapping);
273
275
 
@@ -286,16 +288,16 @@ async function applyFilters(_$w, skipUrlUpdate = false) {
286
288
  // build filters
287
289
  if (filter.value && filter.value.trim() !== '') {
288
290
  if (!skipUrlUpdate) {
289
- if(filter.field === 'title'){
291
+ if(filter.field === FILTER_FIELDS.SEARCH){
290
292
  queryParams.add({ keyWord: filter.value });
291
293
  }
292
- if(filter.field === 'department'){
294
+ if(filter.field === FILTER_FIELDS.DEPARTMENT){
293
295
  queryParams.add({ department: encodeURIComponent(filter.value) });
294
296
  }
295
- if(filter.field === 'cityText'){
297
+ if(filter.field === FILTER_FIELDS.LOCATION){
296
298
  queryParams.add({ location: encodeURIComponent(filter.value) });
297
299
  }
298
- if(filter.field === 'remote'){
300
+ if(filter.field === FILTER_FIELDS.JOB_TYPE){
299
301
  if(filter.value === 'true'){
300
302
  queryParams.add({ jobType: encodeURIComponent("remote") });
301
303
  }
@@ -303,11 +305,11 @@ async function applyFilters(_$w, skipUrlUpdate = false) {
303
305
  queryParams.add({ jobType: encodeURIComponent("onsite") });
304
306
  }
305
307
  }
306
- if(filter.field === 'brand'){
308
+ if(filter.field === FILTER_FIELDS.BRAND){
307
309
  queryParams.add({ brand: encodeURIComponent(filter.value) });
308
310
  }
309
311
  }
310
- if(filter.field === 'remote') {
312
+ if(filter.field === FILTER_FIELDS.JOB_TYPE) {
311
313
  value = filter.value === 'true';
312
314
  } else {
313
315
  value = filter.value;
@@ -316,22 +318,22 @@ async function applyFilters(_$w, skipUrlUpdate = false) {
316
318
  }
317
319
  else{
318
320
  if (!skipUrlUpdate) {
319
- if(filter.field === 'title'){
321
+ if(filter.field === FILTER_FIELDS.SEARCH){
320
322
  queryParams.remove(["keyWord" ]);
321
323
  }
322
- if(filter.field === 'department'){
324
+ if(filter.field === FILTER_FIELDS.DEPARTMENT){
323
325
  console.log("removing department from url")
324
326
  queryParams.remove(["department" ]);
325
327
  }
326
- if(filter.field === 'cityText'){
328
+ if(filter.field === FILTER_FIELDS.LOCATION){
327
329
  console.log("removing location from url")
328
330
  queryParams.remove(["location" ]);
329
331
  }
330
- if(filter.field === 'remote'){
332
+ if(filter.field === FILTER_FIELDS.JOB_TYPE){
331
333
  console.log("removing jobType from url")
332
334
  queryParams.remove(["jobType" ]);
333
335
  }
334
- if(filter.field === 'brand'){
336
+ if(filter.field === FILTER_FIELDS.BRAND){
335
337
  console.log("removing brand from url")
336
338
  queryParams.remove(["brand" ]);
337
339
  }
@@ -340,32 +342,32 @@ async function applyFilters(_$w, skipUrlUpdate = false) {
340
342
  });
341
343
 
342
344
  const filter = await getFilter(filters, 'and');
343
- await _$w('#jobsDataset').setFilter(filter);
344
- await _$w('#jobsDataset').refresh();
345
+ await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).setFilter(filter);
346
+ await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).refresh();
345
347
 
346
348
  const count = await updateCount(_$w);
347
349
  console.log("updating map markers");
348
350
  await updateMapMarkers(_$w);
349
351
  console.log("updating map markers completed");
350
- count ? _$w('#resultsMultiState').changeState('results') : _$w('#resultsMultiState').changeState('noResults');
352
+ count ? _$w(CAREERS_PAGE_SELECTORS.RESULTS_MULTI_STATE).changeState('results') : _$w(CAREERS_PAGE_SELECTORS.RESULTS_MULTI_STATE).changeState('noResults');
351
353
 
352
354
 
353
355
  // Update reset button state
354
356
  const hasActiveFilters = filters.length > 0;
355
- hasActiveFilters? _$w('#resetFiltersButton').enable() : _$w('#resetFiltersButton').disable();
357
+ hasActiveFilters? _$w(CAREERS_PAGE_SELECTORS.RESET_FILTERS_BUTTON).enable() : _$w(CAREERS_PAGE_SELECTORS.RESET_FILTERS_BUTTON).disable();
356
358
 
357
359
 
358
360
  }
359
361
 
360
362
  async function resetFilters(_$w) {
361
- _$w('#searchInput, #dropdownDepartment, #dropdownLocation, #dropdownJobType, #dropdownBrand').value = '';
363
+ _$w(CAREERS_PAGE_SELECTORS.SEARCH_INPUT, CAREERS_PAGE_SELECTORS.DROPDOWN_DEPARTMENT, CAREERS_PAGE_SELECTORS.DROPDOWN_LOCATION, CAREERS_PAGE_SELECTORS.DROPDOWN_JOB_TYPE, CAREERS_PAGE_SELECTORS.DROPDOWN_BRAND).value = '';
362
364
 
363
- await _$w('#jobsDataset').setFilter(wixData.filter());
364
- await _$w('#jobsDataset').refresh();
365
+ await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).setFilter(wixData.filter());
366
+ await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).refresh();
365
367
 
366
- _$w('#resultsMultiState').changeState('results');
368
+ _$w(CAREERS_PAGE_SELECTORS.RESULTS_MULTI_STATE).changeState('results');
367
369
 
368
- _$w('#resetFiltersButton').disable();
370
+ _$w(CAREERS_PAGE_SELECTORS.RESET_FILTERS_BUTTON).disable();
369
371
 
370
372
  queryParams.remove(["keyWord", "department","page","location","jobType","brand"]);
371
373
 
@@ -377,7 +379,7 @@ async function resetFilters(_$w) {
377
379
  }
378
380
 
379
381
  async function updateCount(_$w) {
380
- const count = await _$w('#jobsDataset').getTotalCount();
382
+ const count = await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).getTotalCount();
381
383
  _$w('#numOfPositionText').text = `Showing ${count} Open Positions`;
382
384
 
383
385
  return count;
@@ -388,19 +390,19 @@ async function handleDepartmentParam(_$w,department) {
388
390
 
389
391
 
390
392
 
391
- let dropdownOptions = _$w('#dropdownDepartment').options;
393
+ let dropdownOptions = _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_DEPARTMENT).options;
392
394
  console.log("dropdown options:", dropdownOptions);
393
395
  const optionsFromCMS=await wixData.query("AmountOfJobsPerDepartment").find();
394
396
  //+1 because of the "All" option
395
397
 
396
398
  if(dropdownOptions.length!==optionsFromCMS.items.length+1){
397
- fixDropdownOptions('#dropdownDepartment',optionsFromCMS, _$w);
399
+ fixDropdownOptions(CAREERS_PAGE_SELECTORS.DROPDOWN_DEPARTMENT,optionsFromCMS, _$w);
398
400
  }
399
401
 
400
- if (_$w('#dropdownDepartment').options.find(option => option.value === departmentValue))
402
+ if (_$w(CAREERS_PAGE_SELECTORS.DROPDOWN_DEPARTMENT).options.find(option => option.value === departmentValue))
401
403
  {
402
404
  console.log("department value found in dropdown options ",departmentValue);
403
- _$w('#dropdownDepartment').value = departmentValue;
405
+ _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_DEPARTMENT).value = departmentValue;
404
406
  }
405
407
  else{
406
408
  console.warn("department value not found in dropdown options");
@@ -429,18 +431,18 @@ function fixDropdownOptions(dropdown,optionsFromCMS, _$w){
429
431
 
430
432
  async function handleLocationParam(_$w,location) {
431
433
  const locationValue = decodeURIComponent(location);
432
- let dropdownOptions = _$w('#dropdownLocation').options;
434
+ let dropdownOptions = _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_LOCATION).options;
433
435
  console.log("location dropdown options:", dropdownOptions);
434
436
  const optionsFromCMS=await wixData.query("cities").find();
435
437
  //+1 because of the "All" option
436
438
  if(dropdownOptions.length!==optionsFromCMS.items.length+1){
437
- fixDropdownOptions('#dropdownLocation',optionsFromCMS, _$w);
439
+ fixDropdownOptions(CAREERS_PAGE_SELECTORS.DROPDOWN_LOCATION,optionsFromCMS, _$w);
438
440
  }
439
441
 
440
- const option=_$w('#dropdownLocation').options.find(option => option.value.toLowerCase() === locationValue.toLowerCase())
442
+ const option=_$w(CAREERS_PAGE_SELECTORS.DROPDOWN_LOCATION).options.find(option => option.value.toLowerCase() === locationValue.toLowerCase())
441
443
 
442
444
  if(option){
443
- _$w('#dropdownLocation').value = option.value;
445
+ _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_LOCATION).value = option.value;
444
446
  }
445
447
  else{
446
448
  console.warn("location value not found in dropdown options");
@@ -451,15 +453,15 @@ async function handleLocationParam(_$w,location) {
451
453
 
452
454
  async function handleBrandParam(_$w,brand){
453
455
  const brandValue = decodeURIComponent(brand);
454
- let dropdownOptions = _$w('#dropdownBrand').options;
456
+ let dropdownOptions = _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_BRAND).options;
455
457
  console.log("brand dropdown options:", dropdownOptions);
456
458
  const optionsFromCMS=await wixData.query(COLLECTIONS.BRANDS).find();
457
459
  if(dropdownOptions.length!==optionsFromCMS.items.length+1){
458
- fixDropdownOptions('#dropdownBrand',optionsFromCMS, _$w);
460
+ fixDropdownOptions(CAREERS_PAGE_SELECTORS.DROPDOWN_BRAND,optionsFromCMS, _$w);
459
461
  }
460
- const option=_$w('#dropdownBrand').options.find(option => option.value.toLowerCase() === brandValue.toLowerCase())
462
+ const option=_$w(CAREERS_PAGE_SELECTORS.DROPDOWN_BRAND).options.find(option => option.value.toLowerCase() === brandValue.toLowerCase())
461
463
  if(option){
462
- _$w('#dropdownBrand').value = option.value;
464
+ _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_BRAND).value = option.value;
463
465
  }
464
466
  else{
465
467
  console.warn("brand value not found in dropdown options");
@@ -469,7 +471,7 @@ async function handleBrandParam(_$w,brand){
469
471
 
470
472
  async function handleJobTypeParam(_$w,jobType) {
471
473
  const jobTypeValue = decodeURIComponent(jobType);
472
- let dropdownOptions = _$w('#dropdownJobType').options;
474
+ let dropdownOptions = _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_JOB_TYPE).options;
473
475
  console.log("jobType dropdown options:", dropdownOptions);
474
476
  let option;
475
477
  if(jobTypeValue.toLowerCase()==="remote"){
@@ -479,7 +481,7 @@ async function handleJobTypeParam(_$w,jobType) {
479
481
  option="false";
480
482
  }
481
483
  if(option){
482
- _$w('#dropdownJobType').value = option;
484
+ _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_JOB_TYPE).value = option;
483
485
  }
484
486
  else{
485
487
  console.warn("jobType value not found in dropdown options");
@@ -488,8 +490,8 @@ async function handleJobTypeParam(_$w,jobType) {
488
490
  }
489
491
 
490
492
  async function updateMapMarkers(_$w){
491
- const numOfItems = await _$w('#jobsDataset').getTotalCount();
492
- const items = await _$w('#jobsDataset').getItems(0, numOfItems);
493
+ const numOfItems = await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).getTotalCount();
494
+ const items = await _$w(CAREERS_PAGE_SELECTORS.JOBS_DATASET).getItems(0, numOfItems);
493
495
  const markers = filterBrokenMarkers(items.items).map(item => {
494
496
  const location = item.locationAddress.location;
495
497
  return {
@@ -502,21 +504,21 @@ async function updateMapMarkers(_$w){
502
504
  };
503
505
  });
504
506
  //@ts-ignore
505
- _$w('#googleMaps').setMarkers(markers);
507
+ _$w(CAREERS_PAGE_SELECTORS.GOOGLE_MAPS).setMarkers(markers);
506
508
 
507
509
  }
508
510
 
509
511
  async function handleBrandDropdown(_$w){
510
512
  if(siteconfig.disableMultiBrand==="false"){
511
- const brands=await wixData.query(COLLECTIONS.BRANDS).find();
512
- if(brands.items.length>1){
513
- console.log("showing brand dropdown");
514
- _$w('#dropdownBrand').show();
513
+ const brands=await wixData.query(COLLECTIONS.BRANDS).find();
514
+ if(brands.items.length>1){
515
+ console.log("showing brand dropdown");
516
+ _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_BRAND).show();
517
+ }
518
+ }
519
+ else{
520
+ _$w(CAREERS_PAGE_SELECTORS.DROPDOWN_BRAND).hide();
515
521
  }
516
- }
517
- else{
518
- _$w('#dropdownBrand').hide();
519
- }
520
522
  }
521
523
  module.exports = {
522
524
  careersPageOnReady,
@@ -88,7 +88,6 @@ function loadPrimarySearchRepeater(_$w) {
88
88
  );
89
89
  location.to(clickedItemData["link-jobs-title"]);
90
90
  });
91
-
92
91
  _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.CATEGORY_RESULTS_REPEATER).onItemReady(async ($item, itemData) => {
93
92
  $item(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_CATEGORY_BUTTON).label = itemData.title || '';
94
93
  });
@@ -105,63 +104,62 @@ function loadPrimarySearchRepeater(_$w) {
105
104
 
106
105
  }
107
106
 
108
- function bindPrimarySearch(_$w,allvaluesobjects,alljobs) {
107
+ function bindPrimarySearch(_$w,allvaluesobjects,alljobs) {
109
108
 
110
109
  const primarySearchDebounced = debounce(async () => {
111
110
  const query = (_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value || '').toLowerCase().trim();
112
111
  await primarySearch(_$w, query, alljobs);
113
- }, 400);
112
+ }, 150);
114
113
 
115
114
  _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onInput(async () => {
116
- primarySearchDebounced();
117
- });
118
-
119
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onClick(async () => {
120
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).expand();
121
- if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()!=='') {
122
- query = _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim();
123
- await primarySearch(_$w, query, alljobs);
124
- }
125
- else {
126
- await loadCategoriesListPrimarySearch(_$w,allvaluesobjects);
127
- }
115
+ await primarySearchDebounced();
128
116
  });
129
117
 
130
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).onMouseOut(async () => {
131
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
132
- });
118
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onClick(async () => {
119
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).expand();
120
+ if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()!=='') {
121
+ await primarySearch(_$w, _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim(), alljobs);
122
+ }
123
+ else {
124
+ await loadCategoriesListPrimarySearch(_$w,allvaluesobjects);
125
+ }
126
+ });
133
127
 
134
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onKeyPress(async (event) => {
135
- if( event.key==='Enter') {
136
- console.log("primary search input key pressed");
137
- console.log("_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value: ",_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
138
- if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()==='') {
139
- // _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
140
- const baseUrl = await location.baseUrl();
141
- location.to(`${baseUrl}/search`);
142
-
143
- }
144
- else {
145
- let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
146
- const baseUrl = await location.baseUrl();
147
- location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
148
- }
149
- }
150
- });
128
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).onMouseOut(async () => {
129
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
130
+ });
151
131
 
152
- _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_BUTTON).onClick(async () => {
153
- console.log("primary search button clicked");
132
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).onKeyPress(async (event) => {
133
+ if( event.key==='Enter') {
134
+ console.log("primary search input key pressed");
154
135
  console.log("_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value: ",_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
155
136
  if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()==='') {
137
+ // _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.RESULTS_CONTAINER).collapse();
156
138
  const baseUrl = await location.baseUrl();
157
139
  location.to(`${baseUrl}/search`);
158
- }
140
+
141
+ }
159
142
  else {
160
143
  let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
161
144
  const baseUrl = await location.baseUrl();
162
- location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
145
+ location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
163
146
  }
164
- });
147
+ }
148
+ });
149
+
150
+ _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_BUTTON).onClick(async () => {
151
+ console.log("primary search button clicked");
152
+ console.log("_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value: ",_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
153
+ if(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value.trim()==='') {
154
+ const baseUrl = await location.baseUrl();
155
+ location.to(`${baseUrl}/search`);
156
+ }
157
+ else {
158
+ let encodedKeyWord=encodeURIComponent(_$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.PRIMARY_SEARCH_INPUT).value);
159
+ const baseUrl = await location.baseUrl();
160
+ location.to(`${baseUrl}/search?keyword=${encodedKeyWord}`);
161
+ }
162
+ });
165
163
 
166
164
 
167
165
  }
@@ -197,8 +195,7 @@ async function primarySearch(_$w,query,alljobs) {
197
195
  }
198
196
  }
199
197
  _$w(CAREERS_MULTI_BOXES_PAGE_CONSTS.JOB_RESULTS_REPEATER).data = filteredJobs
200
-
201
- return filteredJobs.length>0;
198
+ return filteredJobs.length>0;
202
199
 
203
200
  }
204
201
 
@@ -0,0 +1,53 @@
1
+ const CAREERS_PAGE_SELECTORS = {
2
+ FILTER_ICON: '#filterIcon',
3
+ FILTER_BOX: '#filterBox',
4
+ RESULT_BOX: '#resultBox',
5
+ PAGINATION_BTN: '#paginationBtn',
6
+ HEAD_BTNS: '#headBtns',
7
+ SELECTED_VALUES_REPEATER: '#selectedValuesReapter',
8
+ BUTTOM_TXT: '#buttomTxt',
9
+ SECTION_24: '#section24',
10
+ SECTION_3: '#section3',
11
+ LINE_3: '#line3',
12
+ EXIT_BUTTON: '#exitBtn',
13
+ REFINE_SEARCH_BUTTON: '#refineSearchBtn',
14
+
15
+ POSITIONS_REPEATER: '#positionsRepeater',
16
+ POSITION_ITEM: '#positionItem',
17
+ SEARCH_INPUT: '#searchInput',
18
+ CLEAR_SEARCH: '#clearSearch',
19
+
20
+ DROPDOWN_BRAND: '#dropdownBrand',
21
+ DROPDOWN_CONTAINER: '#dropdownsContainer',
22
+ DROPDOWN_DEPARTMENT: '#dropdownDepartment',
23
+ DROPDOWN_LOCATION: '#dropdownLocation',
24
+ DROPDOWN_JOB_TYPE: '#dropdownJobType',
25
+
26
+ OPEN_FILTERS_BUTTON: '#openFiltersButton',
27
+ CLOSE_FILTERS_BUTTON: '#closeFiltersButton',
28
+ RESET_FILTERS_BUTTON: '#resetFiltersButton',
29
+ RESET_FILTERS_BUTTON: '#resetFiltersButton',
30
+
31
+ RESULTS_MULTI_STATE: '#resultsMultiState',
32
+ BRANDS_DATASET: '#brandsDataset',
33
+ DEPARTMENTS_DATASET: '#departmentsDataset',
34
+ LOCATIONS_DATASET: '#locationsDataset',
35
+ JOB_TYPES_DATASET: '#jobTypesDataset',
36
+ JOBS_DATASET: '#jobsDataset',
37
+
38
+ GOOGLE_MAPS: '#googleMaps',
39
+ FOOTER: '#footer',
40
+ }
41
+
42
+ const FILTER_FIELDS = {
43
+ DEPARTMENT: 'department',
44
+ LOCATION: 'cityText',
45
+ JOB_TYPE: 'remote',
46
+ BRAND: 'brand',
47
+ SEARCH: 'title',
48
+ }
49
+
50
+ module.exports = {
51
+ CAREERS_PAGE_SELECTORS,
52
+ FILTER_FIELDS,
53
+ }