diff --git a/.lintstagedrc.yml b/.lintstagedrc.yml index a667fe09d..9616364b9 100644 --- a/.lintstagedrc.yml +++ b/.lintstagedrc.yml @@ -1,2 +1,2 @@ -"*.{vue,js,vue,html,js}": +"*.{vue,js,ts,jsx,tsx}": - "pnpm run lint" diff --git a/packages/v3/.gitignore b/packages/v3/.gitignore index 9b9e04d38..b356977fa 100644 --- a/packages/v3/.gitignore +++ b/packages/v3/.gitignore @@ -7,6 +7,7 @@ node_modules /cypress/runner/dist # local env files +.env .env.local .env.*.local diff --git a/packages/v3/cypress/e2e/marker-icon.cy.ts b/packages/v3/cypress/e2e/marker-icon.cy.ts index 9440f3a0d..8c1e4f014 100644 --- a/packages/v3/cypress/e2e/marker-icon.cy.ts +++ b/packages/v3/cypress/e2e/marker-icon.cy.ts @@ -4,4 +4,19 @@ describe('MarkerIcon component', () => { cy.get('button[name=marker]').click(); cy.get('.gmv-map').find('map').should('have.length', 2); }); + + it('should remove all markers from the map', function () { + cy.visit('/'); + cy.get('button[name=marker]').click(); + cy.get('#visibility').click(); + cy.get('.gmv-map').find('map').should('have.length', 0); + }); + + it('should re-add all markers on the map', function () { + cy.visit('/'); + cy.get('button[name=marker]').click(); + cy.get('#visibility').click(); + cy.get('#visibility').click(); + cy.get('.gmv-map').find('map').should('have.length', 2); + }); }); diff --git a/packages/v3/cypress/runner/components/MarkerTest.vue b/packages/v3/cypress/runner/components/MarkerTest.vue index 407a5b9e6..21c8b1dfd 100644 --- a/packages/v3/cypress/runner/components/MarkerTest.vue +++ b/packages/v3/cypress/runner/components/MarkerTest.vue @@ -1,4 +1,8 @@ @@ -15,6 +20,7 @@ export default { data() { return { + visible: true, center: { lat: 10.0, lng: 10.0, @@ -35,5 +41,10 @@ export default { ], }; }, + computed: { + btnTxt() { + return this.visible ? 'Hide markers' : 'Show markers'; + }, + }, }; diff --git a/packages/v3/cypress/runner/components/PolylineTest.vue b/packages/v3/cypress/runner/components/PolylineTest.vue index 7ec74b542..785bfdad2 100644 --- a/packages/v3/cypress/runner/components/PolylineTest.vue +++ b/packages/v3/cypress/runner/components/PolylineTest.vue @@ -35,6 +35,8 @@ + + diff --git a/packages/v3/package.json b/packages/v3/package.json index df23aa788..5bbe5b0ff 100644 --- a/packages/v3/package.json +++ b/packages/v3/package.json @@ -19,7 +19,7 @@ }, "scripts": { "clean:build": "rimraf ./dist && rimraf ./build && rimraf ./types", - "dev": "vite", + "dev": "cpx ./cypress/runner/.env ./ --verbose && vite", "dev:e2e": "pnpm run build && vite --config cypress/runner/vite.config.js", "preview": "vite preview --port 4173", "build": "vite build && pnpm run copy:components", @@ -29,7 +29,7 @@ "test": "vitest", "test:unit": "vitest --environment jsdom", "coverage": "vitest run --coverage", - "test:e2e": "start-server-and-test test:e2e:vite:server http://localhost:4173/ 'pnpm exec cypress open --e2e'", + "test:e2e": "cypress install && start-server-and-test test:e2e:vite:server http://localhost:4173/ 'pnpm exec cypress open --e2e'", "test:e2e:ci": "start-server-and-test test:e2e:vite:server http://localhost:4173/ 'pnpm exec cypress run --e2e'", "test:e2e:build": "pnpm run build && vite build --config cypress/runner/vite.config.js", "test:e2e:preview": "vite preview --config cypress/runner/vite.config.js", @@ -71,6 +71,7 @@ "@types/google.maps": "^3.53.2", "@types/jsdom": "^21.1.1", "@types/lodash.isequal": "^4.5.6", + "@types/lodash.throttle": "^4.1.7", "@types/node": "^20.2.5", "@vitejs/plugin-vue": "^4.2.3", "@vitest/coverage-c8": "^0.31.1", @@ -89,6 +90,7 @@ "happy-dom": "^9.20.3", "jsdom": "^22.0.0", "lint-staged": "^13.2.2", + "lodash.throttle": "^4.1.1", "npm-run-all": "^4.1.5", "prettier": "^2.8.8", "rimraf": "^5.0.1", diff --git a/packages/v3/src/composables/helpers.ts b/packages/v3/src/composables/helpers.ts index 4bb832b6b..e56c1043f 100644 --- a/packages/v3/src/composables/helpers.ts +++ b/packages/v3/src/composables/helpers.ts @@ -553,7 +553,7 @@ function bindVuePropsWithGoogleMapsPropsSetters( watch( () => props[propKey], (value, oldValue) => { - if (value && !isEqual(value, oldValue)) + if (value != null && !isEqual(value, oldValue)) AnyGoogleMapsClassInstance[setMethodName](value); }, { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3e70bef0e..36d598359 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.1' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -205,6 +205,9 @@ importers: '@types/lodash.isequal': specifier: ^4.5.6 version: 4.5.6 + '@types/lodash.throttle': + specifier: ^4.1.7 + version: 4.1.7 '@types/node': specifier: ^20.2.5 version: 20.2.5 @@ -259,6 +262,9 @@ importers: lint-staged: specifier: ^13.2.2 version: 13.2.2 + lodash.throttle: + specifier: ^4.1.1 + version: 4.1.1 npm-run-all: specifier: ^4.1.5 version: 4.1.5 @@ -354,7 +360,7 @@ packages: '@babel/traverse': 7.22.4 '@babel/types': 7.22.4 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 @@ -447,7 +453,7 @@ packages: '@babel/core': 7.22.1 '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.22.1) '@babel/helper-plugin-utils': 7.21.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) lodash.debounce: 4.0.8 resolve: 1.22.2 semver: 6.3.0 @@ -1501,7 +1507,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.22.4 '@babel/types': 7.22.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -1951,7 +1957,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) espree: 9.5.2 globals: 13.20.0 ignore: 5.2.4 @@ -1990,7 +1996,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -2448,7 +2454,7 @@ packages: conventional-changelog-angular: 5.0.13 conventional-commits-filter: 2.0.7 conventional-commits-parser: 3.2.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) import-from: 4.0.0 lodash: 4.17.21 micromatch: 4.0.5 @@ -2470,7 +2476,7 @@ packages: dependencies: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) dir-glob: 3.0.1 execa: 5.1.1 lodash: 4.17.21 @@ -2493,7 +2499,7 @@ packages: '@octokit/plugin-throttling': 5.2.3(@octokit/core@4.2.1) '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) dir-glob: 3.0.1 fs-extra: 11.1.1 globby: 11.1.0 @@ -2542,7 +2548,7 @@ packages: conventional-changelog-writer: 5.0.1 conventional-commits-filter: 2.0.7 conventional-commits-parser: 3.2.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) get-stream: 7.0.0 import-from: 4.0.0 into-stream: 7.0.0 @@ -2762,6 +2768,12 @@ packages: '@types/lodash': 4.14.195 dev: true + /@types/lodash.throttle@4.1.7: + resolution: {integrity: sha512-znwGDpjCHQ4FpLLx19w4OXDqq8+OvREa05H89obtSyXyOFKL3dDjCslsmfBz0T2FU8dmf5Wx1QvogbINiGIu9g==} + dependencies: + '@types/lodash': 4.14.195 + dev: true + /@types/lodash@4.14.195: resolution: {integrity: sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==} dev: true @@ -2957,7 +2969,7 @@ packages: '@typescript-eslint/scope-manager': 5.59.8 '@typescript-eslint/type-utils': 5.59.8(eslint@8.41.0)(typescript@5.0.4) '@typescript-eslint/utils': 5.59.8(eslint@8.41.0)(typescript@5.0.4) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) eslint: 8.41.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 @@ -2982,7 +2994,7 @@ packages: '@typescript-eslint/scope-manager': 5.59.8 '@typescript-eslint/types': 5.59.8 '@typescript-eslint/typescript-estree': 5.59.8(typescript@5.0.4) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) eslint: 8.41.0 typescript: 5.0.4 transitivePeerDependencies: @@ -3009,7 +3021,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 5.59.8(typescript@5.0.4) '@typescript-eslint/utils': 5.59.8(eslint@8.41.0)(typescript@5.0.4) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) eslint: 8.41.0 tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 @@ -3033,7 +3045,7 @@ packages: dependencies: '@typescript-eslint/types': 5.59.8 '@typescript-eslint/visitor-keys': 5.59.8 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.1 @@ -4097,7 +4109,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) transitivePeerDependencies: - supports-color dev: true @@ -4106,7 +4118,7 @@ packages: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) transitivePeerDependencies: - supports-color dev: true @@ -7211,7 +7223,6 @@ packages: dependencies: ms: 2.1.3 supports-color: 6.1.0 - dev: false /debug@3.2.7(supports-color@8.1.1): resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} @@ -7236,7 +7247,6 @@ packages: dependencies: ms: 2.1.2 supports-color: 6.1.0 - dev: false /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -7249,6 +7259,7 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 + dev: true /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -8191,7 +8202,7 @@ packages: /eslint-import-resolver-node@0.3.7: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@6.1.0) is-core-module: 2.12.1 resolve: 1.22.2 transitivePeerDependencies: @@ -8219,7 +8230,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@6.1.0) eslint: 8.41.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: @@ -8281,7 +8292,7 @@ packages: array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@6.1.0) doctrine: 2.1.0 eslint: 8.41.0 eslint-import-resolver-node: 0.3.7 @@ -8446,7 +8457,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.0 @@ -9062,7 +9073,7 @@ packages: debug: optional: true dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -10075,7 +10086,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) transitivePeerDependencies: - supports-color dev: true @@ -10085,7 +10096,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) transitivePeerDependencies: - supports-color dev: true @@ -10153,7 +10164,7 @@ packages: engines: {node: '>= 4.5.0'} dependencies: agent-base: 4.3.0 - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7(supports-color@6.1.0) transitivePeerDependencies: - supports-color dev: true @@ -10163,7 +10174,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) transitivePeerDependencies: - supports-color dev: true @@ -10173,7 +10184,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) transitivePeerDependencies: - supports-color dev: true @@ -11044,7 +11055,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -11484,7 +11495,7 @@ packages: chalk: 5.2.0 cli-truncate: 3.1.0 commander: 10.0.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) execa: 7.1.1 lilconfig: 2.1.0 listr2: 5.0.8 @@ -11731,6 +11742,10 @@ packages: lodash._reinterpolate: 3.0.0 dev: false + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + dev: true + /lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} @@ -12488,7 +12503,7 @@ packages: resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} dependencies: '@types/debug': 4.1.8 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 micromark-factory-space: 1.1.0 @@ -15506,7 +15521,7 @@ packages: '@vue/compiler-sfc': '*' dependencies: '@vue/compiler-sfc': 3.3.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) hash-sum: 2.0.0 rollup-pluginutils: 2.8.2 transitivePeerDependencies: @@ -15718,7 +15733,7 @@ packages: '@semantic-release/release-notes-generator': 11.0.2(semantic-release@21.0.2) aggregate-error: 4.0.1 cosmiconfig: 8.1.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) env-ci: 9.1.0 execa: 7.1.1 figures: 5.0.0 @@ -16271,7 +16286,7 @@ packages: arg: 5.0.2 bluebird: 3.7.2 check-more-types: 2.24.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) execa: 5.1.1 lazy-ass: 1.6.0 ps-tree: 1.2.0 @@ -16599,7 +16614,7 @@ packages: hasBin: true dependencies: '@adobe/css-tools': 4.2.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) glob: 7.2.3 sax: 1.2.4 source-map: 0.7.4 @@ -16647,6 +16662,7 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 + dev: true /supports-color@9.3.1: resolution: {integrity: sha512-knBY82pjmnIzK3NifMo3RxEIRD9E0kIzV4BKcyTZ9+9kWgLMxd4PrsTSMoFQUabgRBbF8KOLRDCyKgNV+iK44Q==} @@ -17772,7 +17788,7 @@ packages: hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) mlly: 1.3.0 pathe: 1.1.0 picocolors: 1.0.0 @@ -17797,7 +17813,7 @@ packages: '@microsoft/api-extractor': 7.35.1(@types/node@20.2.5) '@rollup/pluginutils': 5.0.2(rollup@3.23.0) '@rushstack/node-core-library': 3.59.2(@types/node@20.2.5) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) fast-glob: 3.2.12 fs-extra: 10.1.0 kolorist: 1.8.0 @@ -17888,7 +17904,7 @@ packages: cac: 6.7.14 chai: 4.3.7 concordance: 5.0.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) happy-dom: 9.20.3 jsdom: 22.0.0 local-pkg: 0.4.3 @@ -17980,7 +17996,7 @@ packages: peerDependencies: eslint: '>=6.0.0' dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@6.1.0) eslint: 8.41.0 eslint-scope: 7.2.0 eslint-visitor-keys: 3.4.1