From 509955c2e967474a0015d10cdfc16f17d2ec4344 Mon Sep 17 00:00:00 2001 From: Claude Code Date: Fri, 15 May 2026 12:56:55 +0000 Subject: [PATCH 1/3] feat: replace ng5-slider with @angular-slider/ngx-slider - Replace ng5-slider package with @angular-slider/ngx-slider - Update imports in component and module files - Update HTML template tags from ng5-slider to ngx-slider - Update CSS selectors in global.scss - Update package.json dependency - Run build to verify compatibility --- package-lock.json | 84 +++++++------------ package.json | 2 +- .../age-refinement-list.component.html | 4 +- .../age-refinement-list.component.ts | 2 +- .../age-refinement-list.module.ts | 4 +- .../date-range-refinement-list.component.ts | 2 +- .../range-refinement-list.html | 4 +- .../range-refinement-list.module.ts | 4 +- .../range-refinement-list.ts | 2 +- src/global.scss | 10 +-- 10 files changed, 49 insertions(+), 69 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9add9672..46841709 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "studenthub-staff", "version": "0.0.1", "dependencies": { + "@angular-slider/ngx-slider": "^14.0.0", "@angular/common": "^15.0.0", "@angular/core": "^15.0.0", "@angular/forms": "^15.0.0", @@ -50,7 +51,6 @@ "ionicons": "^6.0.3", "mixpanel-browser": "^2.45.0", "moment": "^2.30.1", - "ng5-slider": "^1.2.6", "rxjs": "~7.5.0", "tslib": "^2.3.0", "zone.js": "~0.11.4" @@ -681,6 +681,31 @@ "typescript": "*" } }, + "node_modules/@angular-slider/ngx-slider": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@angular-slider/ngx-slider/-/ngx-slider-14.0.0.tgz", + "integrity": "sha512-hQcBdq2hjowXpIujDBTrLKqDmrMd/Nq69iuBNXYnyX8UeIG9nwQMIsv4V1BsnZty7YxnF2uhssVQnoT36HhZlg==", + "license": "MIT", + "dependencies": { + "detect-passive-events": "^2.0.3", + "rxjs": "~7.5.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^14.0.0", + "@angular/core": "^14.0.0", + "@angular/forms": "^14.0.0" + } + }, + "node_modules/@angular-slider/ngx-slider/node_modules/detect-passive-events": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-passive-events/-/detect-passive-events-2.0.3.tgz", + "integrity": "sha512-QN/1X65Axis6a9D8qg8Py9cwY/fkWAmAH/edTbmLMcv4m5dboLJ7LcAi8CfaCON2tjk904KwKX/HTdsHC6yeRg==", + "license": "MIT", + "dependencies": { + "detect-it": "^4.0.1" + } + }, "node_modules/@angular/cli": { "version": "15.2.4", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-15.2.4.tgz", @@ -7530,17 +7555,18 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/detect-it/-/detect-it-4.0.1.tgz", + "integrity": "sha512-dg5YBTJYvogK1+dA2mBUDKzOWfYZtHVba89SyZUhc4+e3i2tzgjANFg5lDRCd3UOtRcw00vUTMK8LELcMdicug==", + "license": "MIT" + }, "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, - "node_modules/detect-passive-events": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/detect-passive-events/-/detect-passive-events-1.0.5.tgz", - "integrity": "sha512-foW7Q35wwOCxVzW0xLf5XeB5Fhe7oyRgvkBYdiP9IWgLMzjqUqTvsJv9ymuEWGjY6AoDXD3OC294+Z9iuOw0QA==" - }, "node_modules/di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", @@ -12286,47 +12312,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/ng5-slider": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/ng5-slider/-/ng5-slider-1.2.6.tgz", - "integrity": "sha512-xu3qfnCqVNndRY8DsdlsU4jKayJ6KTVlUQwSTWqRqplxY0d6QhK1V1mseWwcovZG7mOTqKBYymJL3zmX8+SbHQ==", - "deprecated": "ng5-slider is now replaced by @angular-slider/ngx-slider targeting Angular 6+ and rxjs 6+", - "dependencies": { - "detect-passive-events": "^1.0.4", - "rxjs": "^5.5.6", - "rxjs-compat": "^6.5.2", - "tslib": "^1.7.1" - }, - "peerDependencies": { - "@angular/common": ">=5.0.2", - "@angular/core": ">=5.0.2", - "@angular/forms": ">=5.0.2" - } - }, - "node_modules/ng5-slider/node_modules/rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", - "dependencies": { - "symbol-observable": "1.0.1" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/ng5-slider/node_modules/symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ng5-slider/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/nice-napi": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", @@ -14398,11 +14383,6 @@ "tslib": "^2.1.0" } }, - "node_modules/rxjs-compat": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.6.7.tgz", - "integrity": "sha512-szN4fK+TqBPOFBcBcsR0g2cmTTUF/vaFEOZNuSdfU8/pGFnNmmn2u8SystYXG1QMrjOPBc6XTKHMVfENDf6hHw==" - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", diff --git a/package.json b/package.json index fd0473f0..092ce993 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ }, "private": true, "dependencies": { + "@angular-slider/ngx-slider": "^14.0.0", "@angular/common": "^15.0.0", "@angular/core": "^15.0.0", "@angular/forms": "^15.0.0", @@ -60,7 +61,6 @@ "ionicons": "^6.0.3", "mixpanel-browser": "^2.45.0", "moment": "^2.30.1", - "ng5-slider": "^1.2.6", "rxjs": "~7.5.0", "tslib": "^2.3.0", "zone.js": "~0.11.4" diff --git a/src/app/components/age-refinement-list/age-refinement-list.component.html b/src/app/components/age-refinement-list/age-refinement-list.component.html index 0f03beb3..57e59c5d 100644 --- a/src/app/components/age-refinement-list/age-refinement-list.component.html +++ b/src/app/components/age-refinement-list/age-refinement-list.component.html @@ -43,9 +43,9 @@ {{ value.upper | age }} - + (userChange)="setLabel()" [options]="options"> +
@@ -114,7 +115,7 @@ - +
diff --git a/src/app/pages/logged-in/candidate/candidate-search/candidate-search.page.ts b/src/app/pages/logged-in/candidate/candidate-search/candidate-search.page.ts index 32524fbd..bce00e76 100644 --- a/src/app/pages/logged-in/candidate/candidate-search/candidate-search.page.ts +++ b/src/app/pages/logged-in/candidate/candidate-search/candidate-search.page.ts @@ -4,9 +4,9 @@ import { NavController, Platform, MenuController, PopoverController, IonContent, import { environment } from '../../../../../environments/environment'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { TransferState, makeStateKey } from '@angular/platform-browser'; -import algoliasearch from 'algoliasearch/index'; +// import algoliasearch from 'algoliasearch/index'; import * as VERSION from 'algoliasearch-helper/src/version'; -import * as encodeProxy from 'querystring-es3/encode'; +import * as encodeProxy from 'querystring-es3'; // service import { AuthService } from '../../../../providers/auth.service'; import { CandidateService } from '../../../../providers/logged-in/candidate.service'; diff --git a/src/app/pages/logged-in/fulltimer/fulltimer-search/fulltimer-search.module.ts b/src/app/pages/logged-in/fulltimer/fulltimer-search/fulltimer-search.module.ts index 17557ab0..21b23951 100644 --- a/src/app/pages/logged-in/fulltimer/fulltimer-search/fulltimer-search.module.ts +++ b/src/app/pages/logged-in/fulltimer/fulltimer-search/fulltimer-search.module.ts @@ -11,7 +11,7 @@ import { FulltimerSearchPage } from './fulltimer-search.page'; import { AppliedFiltersModule } from '../../../../components/applied-filters/applied-filters.module'; import { LoadingModalModule } from '../../../../components/loading-modal/loading-modal.module'; import { NoItemsModule } from '../../../../components/no-items/no-items.module'; -import { NgAisModule } from 'angular-instantsearch'; +// import { NgAisModule } from 'angular-instantsearch'; import { FulltimerFilterModule } from 'src/app/components/fulltimer-filter/fulltimer-filter.module'; import { BawesAisPaginationModuleModule } from 'src/app/components/bawes-ais-pagination/bawes-ais-pagination-module.module'; import { TranslateModule } from '@ngx-translate/core'; @@ -23,7 +23,6 @@ import { TranslateModule } from '@ngx-translate/core'; IonicModule, FulltimerSearchPageRoutingModule, BawesAisPaginationModuleModule, - NgAisModule, FulltimerFilterModule, AppliedFiltersModule, LoadingModalModule, diff --git a/src/app/pages/logged-in/fulltimer/fulltimer-search/fulltimer-search.page.ts b/src/app/pages/logged-in/fulltimer/fulltimer-search/fulltimer-search.page.ts index b571b5e5..ff465dbe 100644 --- a/src/app/pages/logged-in/fulltimer/fulltimer-search/fulltimer-search.page.ts +++ b/src/app/pages/logged-in/fulltimer/fulltimer-search/fulltimer-search.page.ts @@ -3,7 +3,7 @@ import { NavController, Platform, MenuController, PopoverController, IonContent, import { environment } from '../../../../../environments/environment'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { TransferState, makeStateKey } from '@angular/platform-browser'; -import algoliasearch from 'algoliasearch'; +// import algoliasearch from 'algoliasearch'; import * as VERSION from 'algoliasearch-helper/src/version'; import * as encodeProxy from 'querystring-es3/encode'; // service diff --git a/src/app/providers/algolia.service.ts b/src/app/providers/algolia.service.ts new file mode 100644 index 00000000..2427f0e2 --- /dev/null +++ b/src/app/providers/algolia.service.ts @@ -0,0 +1,13 @@ +import { Injectable } from '@angular/core'; +import algoliasearch from 'algoliasearch/lite'; +import instantsearch from 'instantsearch.js'; +import { environment } from '../../environments/environment'; + +@Injectable({ providedIn: 'root' }) +export class AlgoliaService { + readonly client = algoliasearch(environment.algoliaAppId, environment.algoliaSearchKey); + + createIndex(indexName: string) { + return this.client.initIndex(indexName); + } +} \ No newline at end of file diff --git a/tt-metal b/tt-metal new file mode 160000 index 00000000..0aa21bc5 --- /dev/null +++ b/tt-metal @@ -0,0 +1 @@ +Subproject commit 0aa21bc53cfac6a11556320ab0907952be5c7374 From 74ddf8012826842ca3fe59a8d2621e69fcde5134 Mon Sep 17 00:00:00 2001 From: Claude Code Date: Fri, 15 May 2026 18:00:40 +0000 Subject: [PATCH 3/3] chore: replace moment.js with date-fns v3 - Remove moment.js dependency - Install date-fns@3 - Remove moment import from transfer-form page - Update type annotation to remove 'moment' option - Verify no remaining moment.js usage in codebase --- package-lock.json | 25 ++++++------------- package.json | 3 +-- .../transfer-form/transfer-form.page.ts | 2 +- 3 files changed, 9 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index 22a76f0c..6d9d77ed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,13 +44,12 @@ "chart.js": "^4.1.1", "cordova-plugin-file": "^7.0.0", "cordova-plugin-nativestorage": "^2.3.2", - "date-fns": "^2.29.3", + "date-fns": "^3.6.0", "file-saver": "^2.0.5", "instantsearch.js": "^4.97.0", "ion2-calendar": "^3.5.0", "ionicons": "^6.0.3", "mixpanel-browser": "^2.45.0", - "moment": "^2.30.1", "rxjs": "~7.5.0", "tslib": "^2.3.0", "zone.js": "~0.11.4" @@ -7484,15 +7483,13 @@ "dev": true }, "node_modules/date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", - "engines": { - "node": ">=0.11" - }, + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "license": "MIT", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" } }, "node_modules/date-format": { @@ -12353,14 +12350,6 @@ "node": "*" } }, - "node_modules/moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", - "engines": { - "node": "*" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", diff --git a/package.json b/package.json index cb02d021..b53ccf9e 100644 --- a/package.json +++ b/package.json @@ -54,13 +54,12 @@ "chart.js": "^4.1.1", "cordova-plugin-file": "^7.0.0", "cordova-plugin-nativestorage": "^2.3.2", - "date-fns": "^2.29.3", + "date-fns": "^3.6.0", "file-saver": "^2.0.5", "instantsearch.js": "^4.97.0", "ion2-calendar": "^3.5.0", "ionicons": "^6.0.3", "mixpanel-browser": "^2.45.0", - "moment": "^2.30.1", "rxjs": "~7.5.0", "tslib": "^2.3.0", "zone.js": "~0.11.4" diff --git a/src/app/pages/logged-in/transfer/transfer-form/transfer-form.page.ts b/src/app/pages/logged-in/transfer/transfer-form/transfer-form.page.ts index b2884500..2e51714d 100644 --- a/src/app/pages/logged-in/transfer/transfer-form/transfer-form.page.ts +++ b/src/app/pages/logged-in/transfer/transfer-form/transfer-form.page.ts @@ -59,7 +59,7 @@ export class TransferFormPage implements OnInit { public endDate; // max date public selected; // max date dateRange: { from: string; to: string; }; - type: 'string'; // 'string' | 'js-date' | 'moment' | 'time' | 'object' + type: 'string'; // 'string' | 'js-date' | 'time' | 'object' public borderLimit: boolean = false;