Compare commits

...

32 commits

Author SHA1 Message Date
Matt Triff 5dbea2825a
Prep for 10.2.0 (#1077) 2022-11-29 13:44:43 -05:00
Morez 312971acea
[BUGFIX] Fix support for non-Latin characters (#1072)
* solve 1068

* resolve problems

* resolve npm problem

* Merge master and rebuild, fix lint error

* Create fresh package-lock.json

Co-authored-by: محمدرضا ضربی زاده <mohammad.zarbizadeh@samim.net>
Co-authored-by: Matt Triff <matt.triff@gmail.com>
2022-11-29 13:01:01 -05:00
Matt Triff a7ed4d880e
Merge pull request #1001 from brosua/feature/custom-properties
[BUGFIX] Correct evaluation of HTML custom properties and JSON support
2022-11-29 11:18:59 -05:00
Matt Triff ba27dbb533 Convert npx to npm exec 2022-11-29 10:46:06 -05:00
Matt Triff 9c6de739c7 Update build 2022-11-28 17:25:48 -05:00
Matt Triff 2730d7aad4
Merge pull request #1051 from Sysix/update-readme
Documentation: Add option "uniqueItemText" and "customAddItemText" to README
2022-11-28 17:15:03 -05:00
Matt Triff 5d17dd8531 Fix CI workflows 2022-11-28 17:11:41 -05:00
Matt Triff d1f39c6cda Update screenshot 2022-11-28 15:51:16 -05:00
Matt Triff bbdacdfe3b Update all CI workflows to use latest LTS (v18) 2022-11-28 14:18:14 -05:00
Matt Triff 92eabcbd4a Update all CI workflows to use latest LTS (v18) 2022-11-28 12:08:05 -05:00
Matt Triff 2a8107f379 Update package-lock.json 2022-11-28 11:45:39 -05:00
Matt Triff ea45c47d43 Merge branch 'master' into feature/custom-properties 2022-11-28 11:43:15 -05:00
Matt Triff d130beb4e9 Update dependencies, add e2e tests for HTML custom properties 2022-11-28 11:36:04 -05:00
Matt Triff 6056cce4e9
Merge pull request #1073 from Choices-js/dependabot/npm_and_yarn/minimatch-3.1.2
Bump minimatch from 3.0.4 to 3.1.2
2022-11-17 16:15:02 -05:00
dependabot[bot] ce590e3785
Bump minimatch from 3.0.4 to 3.1.2
Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.0.4 to 3.1.2.
- [Release notes](https://github.com/isaacs/minimatch/releases)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-17 16:54:11 +00:00
Matt Triff 30e6dbadda
Merge pull request #1048 from Choices-js/dependabot/npm_and_yarn/terser-5.14.2
Bump terser from 5.10.0 to 5.14.2
2022-11-17 11:29:49 -05:00
Matt Triff 4da6239a67
Merge pull request #1069 from Choices-js/dependabot/npm_and_yarn/loader-utils-1.4.2
Bump loader-utils from 1.4.0 to 1.4.2
2022-11-17 11:29:09 -05:00
dependabot[bot] 9ac71c4717
Bump loader-utils from 1.4.0 to 1.4.2
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.0 to 1.4.2.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v1.4.0...v1.4.2)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-13 12:19:25 +00:00
Alexander Schlegel 835ea12ac9 add option "uniqueItemText" and "customAddItemText" into README.md 2022-08-27 16:50:32 +02:00
dependabot[bot] 1b67baec25
Bump terser from 5.10.0 to 5.14.2
Bumps [terser](https://github.com/terser/terser) from 5.10.0 to 5.14.2.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-20 01:34:00 +00:00
Matt Triff 624dd797a4
Merge pull request #1030 from Choices-js/dependabot/npm_and_yarn/minimist-1.2.6
Bump minimist from 1.2.5 to 1.2.6
2022-07-09 11:05:50 -04:00
Matt Triff cbbdbda95b
Merge pull request #1034 from Moonlight-Angel/patch-1
Allow to overwrite the `$choices-z-index` variable
2022-07-09 10:38:20 -04:00
Genesis d796e90955
Allow to overwrite the $choices-z-index variable
#794 introduced a new SCSS variable for configuring the z-index, but it didn't set the `!default` flag, making it impossible to overwrite in external files.
2022-05-04 11:41:57 +02:00
Matt Triff 06d16cd857
Merge pull request #1026 from comxd/master
Fix typo on aria-labelledby attribute
2022-04-11 20:26:47 -04:00
dependabot[bot] d26b753f6b
Bump minimist from 1.2.5 to 1.2.6
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-11 18:22:59 +00:00
David DIVERRES 72da548a64 Fix typo on aria-labelledby attribute 2022-04-01 14:13:08 +02:00
Josua Vogel 490e341db5 Build public code 2022-03-14 15:57:05 +01:00
Josua Vogel 76780ccc34 Adding unit test and lint 2022-03-14 15:52:48 +01:00
Josua Vogel beb07ebc2c Merge branch 'master' into feature/custom-properties 2022-03-14 15:11:52 +01:00
Matt Triff 20d3f5cd55
Merge pull request #1021 from Choices-js/fix-param
Fix type for parameter on setChoiceByValue
2022-03-13 17:30:36 -04:00
Matt Triff f63201d929 Fix type for parameter on setChoiceByValue 2022-03-13 17:22:37 -04:00
Josua Vogel ac8d27facf [BUGFIX] Correct evaluation of custom properties 2022-01-17 13:46:19 +01:00
70 changed files with 17133 additions and 4929 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 KiB

After

Width:  |  Height:  |  Size: 297 KiB

View file

@ -41,7 +41,7 @@ jobs:
fetch-depth: 1 fetch-depth: 1
- uses: actions/setup-node@v2 - uses: actions/setup-node@v2
with: with:
node-version: '12.x' node-version: 18.x
- name: Cache node modules - name: Cache node modules
uses: actions/cache@v2 uses: actions/cache@v2

View file

@ -14,7 +14,7 @@ jobs:
fetch-depth: 1 fetch-depth: 1
- uses: actions/setup-node@v2 - uses: actions/setup-node@v2
with: with:
node-version: 12 node-version: 18
- name: Build and run all tests - name: Build and run all tests
run: | run: |
npm ci npm ci

View file

@ -18,7 +18,7 @@ jobs:
- uses: actions/setup-node@v2 - uses: actions/setup-node@v2
with: with:
node-version: 12 node-version: 18
- name: Install dependencies and build - name: Install dependencies and build
run: | run: |

View file

@ -14,7 +14,7 @@ jobs:
fetch-depth: 1 fetch-depth: 1
- uses: actions/setup-node@v2 - uses: actions/setup-node@v2
with: with:
node-version: 12 node-version: 18
registry-url: https://registry.npmjs.org/ registry-url: https://registry.npmjs.org/
- name: Build - name: Build
run: | run: |

View file

@ -13,7 +13,7 @@ jobs:
fetch-depth: 1 fetch-depth: 1
- uses: actions/setup-node@v2 - uses: actions/setup-node@v2
with: with:
node-version: 12 node-version: 18
registry-url: https://registry.npmjs.org/ registry-url: https://registry.npmjs.org/
- run: npm ci - run: npm ci
env: env:

View file

@ -26,7 +26,7 @@ jobs:
- uses: actions/setup-node@v2 - uses: actions/setup-node@v2
with: with:
node-version: 12.x node-version: 18.x
- name: Cache node modules - name: Cache node modules
uses: actions/cache@v2 uses: actions/cache@v2
@ -60,7 +60,7 @@ jobs:
- name: run Cypress (with or without recording) - name: run Cypress (with or without recording)
# if we have ran out of free Cypress recordings, run Cypress with recording switched off # if we have ran out of free Cypress recordings, run Cypress with recording switched off
run: npx run-p --race start cypress:ci || npx run-p --race start cypress:run run: npm exec -- run-p --race start cypress:ci || npm exec -- run-p --race start cypress:run
env: env:
NODE_ENV: production # prevent watching NODE_ENV: production # prevent watching
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}

View file

@ -18,7 +18,7 @@ jobs:
- uses: actions/setup-node@v2 - uses: actions/setup-node@v2
with: with:
node-version: 12 node-version: 18
- name: Install dependencies - name: Install dependencies
run: npm ci run: npm ci

View file

@ -17,7 +17,7 @@ jobs:
- uses: actions/setup-node@v2 - uses: actions/setup-node@v2
with: with:
node-version: 12 node-version: 18
- name: Check Polyfills documentation and settings sync - name: Check Polyfills documentation and settings sync
run: node .github/actions-scripts/polyfills-sync.js run: node .github/actions-scripts/polyfills-sync.js

View file

@ -17,7 +17,7 @@ jobs:
- uses: actions/setup-node@v2 - uses: actions/setup-node@v2
with: with:
node-version: 12 node-version: 18
- name: Install dependencies - name: Install dependencies
run: npm install --no-optional --no-audit --ignore-scripts run: npm install --no-optional --no-audit --ignore-scripts

View file

@ -151,6 +151,8 @@ Or include Choices directly:
noResultsText: 'No results found', noResultsText: 'No results found',
noChoicesText: 'No choices to choose from', noChoicesText: 'No choices to choose from',
itemSelectText: 'Press to select', itemSelectText: 'Press to select',
uniqueItemText: 'Only unique values can be added',
customAddItemText: 'Only values matching specific conditions can be added',
addItemText: (value) => { addItemText: (value) => {
return `Press Enter to add <b>"${value}"</b>`; return `Press Enter to add <b>"${value}"</b>`;
}, },
@ -342,7 +344,7 @@ Pass an array of objects:
**Usage:** Whether HTML should be rendered in all Choices elements. If `false`, all elements (placeholder, items, etc.) will be treated as plain text. If `true`, this can be used to perform XSS scripting attacks if you load choices from a remote source. **Usage:** Whether HTML should be rendered in all Choices elements. If `false`, all elements (placeholder, items, etc.) will be treated as plain text. If `true`, this can be used to perform XSS scripting attacks if you load choices from a remote source.
**Deprecation Warning:** This will default to `false` in a future release. **Deprecation Warning:** This will default to `false` in a future release.
### duplicateItemsAllowed ### duplicateItemsAllowed
@ -615,7 +617,7 @@ const example = new Choices(element, {
**Input types affected:** `select-one`, `select-multiple` **Input types affected:** `select-one`, `select-multiple`
**Usage:** The labelId improves accessibility. If set, it will add aria-labeledby to the choices element. **Usage:** The labelId improves accessibility. If set, it will add aria-labelledby to the choices element.
### classNames ### classNames

15
cypress.config.ts Normal file
View file

@ -0,0 +1,15 @@
import { defineConfig } from 'cypress'
export default defineConfig({
video: false,
projectId: 'n7g5qp',
e2e: {
// We've imported your old cypress plugins here.
// You may want to clean this up later by importing these.
setupNodeEvents(on, config) {
return require('./cypress/plugins/index.js')(on, config)
},
baseUrl: 'http://localhost:3001/test',
specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}',
},
})

View file

@ -1,5 +0,0 @@
{
"baseUrl": "http://localhost:3001/test",
"video": false,
"projectId": "n7g5qp"
}

View file

@ -34,6 +34,7 @@ describe('Choices - select multiple', () => {
beforeEach(() => { beforeEach(() => {
cy.get('[data-test-hook=basic]') cy.get('[data-test-hook=basic]')
.find('.choices__input--cloned') .find('.choices__input--cloned')
.wait(200) // Otherwise these tests are flaky
.type('{esc}'); .type('{esc}');
}); });
@ -746,6 +747,70 @@ describe('Choices - select multiple', () => {
}); });
}); });
describe('custom properties via HTML', () => {
beforeEach(() => {
cy.get('[data-test-hook=custom-properties-html]')
.find('.choices')
.click();
});
describe('on input', () => {
it('filters choices based on a string custom property', () => {
const data = [
{
searchText: 'fantastic',
label: 'Label Three',
},
];
data.forEach(({ searchText, label }) => {
cy.get('[data-test-hook=custom-properties-html]')
.find('.choices__input--cloned')
.type(searchText);
cy.get('[data-test-hook=custom-properties-html]')
.find('.choices__list--dropdown .choices__list')
.children()
.first()
.should(($choice) => {
expect($choice.text().trim()).to.equal(label);
});
cy.get('[data-test-hook=custom-properties-html]')
.find('.choices__input--cloned')
.type('{selectall}{del}');
});
});
it('filters choices based on a JSON custom property', () => {
const data = [
{
searchText: 'foo',
label: 'Label Four',
},
];
data.forEach(({ searchText, label }) => {
cy.get('[data-test-hook=custom-properties-html]')
.find('.choices__input--cloned')
.type(searchText);
cy.get('[data-test-hook=custom-properties-html]')
.find('.choices__list--dropdown .choices__list')
.children()
.first()
.should(($choice) => {
expect($choice.text().trim()).to.equal(label);
});
cy.get('[data-test-hook=custom-properties-html]')
.find('.choices__input--cloned')
.type('{selectall}{del}');
});
});
});
});
describe('non-string values', () => { describe('non-string values', () => {
beforeEach(() => { beforeEach(() => {
cy.get('[data-test-hook=non-string-values]').find('.choices').click(); cy.get('[data-test-hook=non-string-values]').find('.choices').click();

View file

@ -841,6 +841,70 @@ describe('Choices - select one', () => {
}); });
}); });
describe('custom properties via HTML', () => {
beforeEach(() => {
cy.get('[data-test-hook=custom-properties-html]')
.find('.choices')
.click();
});
describe('on input', () => {
it('filters choices based on a string custom property', () => {
const data = [
{
searchText: 'fantastic',
label: 'Label Three',
},
];
data.forEach(({ searchText, label }) => {
cy.get('[data-test-hook=custom-properties-html]')
.find('.choices__input--cloned')
.type(searchText);
cy.get('[data-test-hook=custom-properties-html]')
.find('.choices__list--dropdown .choices__list')
.children()
.first()
.should(($choice) => {
expect($choice.text().trim()).to.equal(label);
});
cy.get('[data-test-hook=custom-properties-html]')
.find('.choices__input--cloned')
.type('{selectall}{del}');
});
});
it('filters choices based on a JSON custom property', () => {
const data = [
{
searchText: 'foo',
label: 'Label Four',
},
];
data.forEach(({ searchText, label }) => {
cy.get('[data-test-hook=custom-properties-html]')
.find('.choices__input--cloned')
.type(searchText);
cy.get('[data-test-hook=custom-properties-html]')
.find('.choices__list--dropdown .choices__list')
.children()
.first()
.should(($choice) => {
expect($choice.text().trim()).to.equal(label);
});
cy.get('[data-test-hook=custom-properties-html]')
.find('.choices__input--cloned')
.type('{selectall}{del}');
});
});
});
});
describe('non-string values', () => { describe('non-string values', () => {
beforeEach(() => { beforeEach(() => {
cy.get('[data-test-hook=non-string-values]').find('.choices').click(); cy.get('[data-test-hook=non-string-values]').find('.choices').click();

19964
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
{ {
"name": "choices.js", "name": "choices.js",
"version": "10.1.0", "version": "10.2.0",
"description": "A vanilla JS customisable text input/select box plugin", "description": "A vanilla JS customisable text input/select box plugin",
"main": "./public/assets/scripts/choices.js", "main": "./public/assets/scripts/choices.js",
"types": "./public/types/src/index.d.ts", "types": "./public/types/src/index.d.ts",
@ -56,61 +56,61 @@
"js" "js"
], ],
"devDependencies": { "devDependencies": {
"@babel/core": "^7.17.2", "@babel/core": "^7.20.5",
"@babel/preset-env": "^7.16.11", "@babel/preset-env": "^7.20.2",
"@babel/register": "^7.17.0", "@babel/register": "^7.18.9",
"@types/chai": "^4.3.0", "@types/chai": "^4.3.4",
"@types/mocha": "^9.1.0", "@types/mocha": "^10.0.1",
"@types/sinon": "^10.0.11", "@types/sinon": "^10.0.13",
"@types/sinon-chai": "^3.2.8", "@types/sinon-chai": "^3.2.9",
"@typescript-eslint/eslint-plugin": "^5.11.0", "@typescript-eslint/eslint-plugin": "^5.45.0",
"@typescript-eslint/parser": "^5.11.0", "@typescript-eslint/parser": "^5.45.0",
"autoprefixer": "^10.4.2", "autoprefixer": "^10.4.13",
"babel-loader": "^8.2.3", "babel-loader": "^9.1.0",
"bundlesize": "^0.18.1", "bundlesize": "^0.18.1",
"chai": "^4.3.6", "chai": "^4.3.7",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"csso-cli": "^3.0.0", "csso-cli": "^4.0.1",
"cypress": "9.4.1", "cypress": "11.2.0",
"eslint": "^8.9.0", "eslint": "^8.28.0",
"eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-base": "^15.0.0",
"eslint-config-airbnb-typescript": "^16.1.0", "eslint-config-airbnb-typescript": "^17.0.0",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "^8.5.0",
"eslint-plugin-compat": "4.0.2", "eslint-plugin-compat": "4.0.2",
"eslint-plugin-cypress": "^2.12.1", "eslint-plugin-cypress": "^2.12.1",
"eslint-plugin-import": "^2.25.4", "eslint-plugin-import": "^2.26.0",
"eslint-plugin-prettier": "^4.0.0", "eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-sort-class-members": "^1.14.1", "eslint-plugin-sort-class-members": "^1.15.2",
"eslint-webpack-plugin": "^3.1.1", "eslint-webpack-plugin": "^3.2.0",
"express": "^4.17.2", "express": "^4.18.2",
"husky": "^7.0.4", "husky": "^8.0.2",
"jsdom": "^19.0.0", "jsdom": "^20.0.3",
"lint-staged": "^12.3.4", "lint-staged": "^13.0.4",
"mocha": "^9.2.0", "mocha": "^10.1.0",
"nodemon": "^2.0.15", "nodemon": "^2.0.20",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"nyc": "^15.1.0", "nyc": "^15.1.0",
"postcss": "^8.4.6", "postcss": "^8.4.19",
"postcss-cli": "^9.1.0", "postcss-cli": "^10.0.0",
"prettier": "^2.5.1", "prettier": "^2.8.0",
"sass": "^1.49.7", "sass": "^1.56.1",
"sinon": "^13.0.1", "sinon": "^15.0.0",
"sinon-chai": "^3.7.0", "sinon-chai": "^3.7.0",
"stylelint": "^14.5.0", "stylelint": "^14.15.0",
"stylelint-config-standard": "^25.0.0", "stylelint-config-standard": "^29.0.0",
"stylelint-config-standard-scss": "^3.0.0", "stylelint-config-standard-scss": "^6.1.0",
"ts-loader": "^9.2.6", "ts-loader": "^9.4.1",
"ts-node": "^10.5.0", "ts-node": "^10.9.1",
"typescript": "^4.5.5", "typescript": "^4.9.3",
"webpack": "^5.68.0", "webpack": "^5.75.0",
"webpack-cli": "^4.9.2", "webpack-cli": "^5.0.0",
"webpack-dev-middleware": "^5.3.1", "webpack-dev-middleware": "^6.0.1",
"webpack-hot-middleware": "^2.25.1" "webpack-hot-middleware": "^2.25.3"
}, },
"dependencies": { "dependencies": {
"deepmerge": "^4.2.2", "deepmerge": "^4.2.2",
"fuse.js": "^6.5.3", "fuse.js": "^6.6.2",
"redux": "^4.1.2" "redux": "^4.2.0"
}, },
"npmName": "choices.js", "npmName": "choices.js",
"npmFileMap": [ "npmFileMap": [

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
/*! choices.js v10.2.0 | © 2022 Josh Johnson | https://github.com/jshjohnson/Choices#readme */

File diff suppressed because one or more lines are too long

View file

@ -52,7 +52,7 @@
<!-- Choices includes --> <!-- Choices includes -->
<link rel="stylesheet" href="assets/styles/choices.min.css" /> <link rel="stylesheet" href="assets/styles/choices.min.css" />
<script src="assets/scripts/choices.min.js"></script> <script src="assets/scripts/choices.js"></script>
<!-- End Choices includes --> <!-- End Choices includes -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
@ -440,6 +440,11 @@
data-custom-properties="This option is fantastic" data-custom-properties="This option is fantastic"
>Label Three</option >Label Three</option
> >
<option
value="Dropdown item 4"
data-custom-properties="{ 'description': 'foo' }"
>Label Four</option
>
</select> </select>
<label <label

View file

@ -294,6 +294,28 @@
></select> ></select>
</div> </div>
<div data-test-hook="custom-properties-html">
<label for="choices-custom-properties-html">Custom properties</label>
<select
class="form-control"
name="choices-custom-properties-html"
id="choices-custom-properties-html"
>
<option value="Dropdown item 1">Label One</option>
<option value="Dropdown item 2">Label Two</option>
<option
value="Dropdown item 3"
data-custom-properties="This option is fantastic"
>Label Three</option
>
<option
value="Dropdown item 4"
data-custom-properties="{ 'description': 'foo' }"
>Label Four</option
>
</select>
</div>
<div data-test-hook="non-string-values"> <div data-test-hook="non-string-values">
<label for="choices-non-string-values">Non-string values</label> <label for="choices-non-string-values">Non-string values</label>
<select <select
@ -490,6 +512,11 @@
], ],
}); });
new Choices('#choices-custom-properties-html', {
allowHTML: true,
searchFields: ['label', 'value', 'customProperties'],
});
new Choices('#choices-non-string-values', { new Choices('#choices-non-string-values', {
allowHTML: true, allowHTML: true,
choices: [ choices: [

View file

@ -305,6 +305,28 @@
></select> ></select>
</div> </div>
<div data-test-hook="custom-properties-html">
<label for="choices-custom-properties-html">Custom properties</label>
<select
class="form-control"
name="choices-custom-properties-html"
id="choices-custom-properties-html"
>
<option value="Dropdown item 1">Label One</option>
<option value="Dropdown item 2">Label Two</option>
<option
value="Dropdown item 3"
data-custom-properties="This option is fantastic"
>Label Three</option
>
<option
value="Dropdown item 4"
data-custom-properties="{ 'description': 'foo' }"
>Label Four</option
>
</select>
</div>
<div data-test-hook="non-string-values"> <div data-test-hook="non-string-values">
<label for="choices-non-string-values">Non-string values</label> <label for="choices-non-string-values">Non-string values</label>
<select <select
@ -550,6 +572,11 @@
], ],
}); });
new Choices('#choices-custom-properties-html', {
allowHTML: true,
searchFields: ['label', 'value', 'customProperties'],
});
new Choices('#choices-non-string-values', { new Choices('#choices-non-string-values', {
allowHTML: true, allowHTML: true,
choices: [ choices: [

View file

@ -0,0 +1 @@
//# sourceMappingURL=select-multiple.spec.d.ts.map

View file

@ -0,0 +1 @@
{"version":3,"file":"select-multiple.spec.d.ts","sourceRoot":"","sources":["../../../../cypress/e2e/select-multiple.spec.ts"],"names":[],"mappings":""}

View file

@ -0,0 +1 @@
//# sourceMappingURL=select-one.spec.d.ts.map

View file

@ -0,0 +1 @@
{"version":3,"file":"select-one.spec.d.ts","sourceRoot":"","sources":["../../../../cypress/e2e/select-one.spec.ts"],"names":[],"mappings":""}

View file

@ -0,0 +1 @@
//# sourceMappingURL=text.spec.d.ts.map

View file

@ -0,0 +1 @@
{"version":3,"file":"text.spec.d.ts","sourceRoot":"","sources":["../../../../cypress/e2e/text.spec.ts"],"names":[],"mappings":""}

View file

@ -0,0 +1,3 @@
declare function _exports(on: any, config: any): void;
export = _exports;
//# sourceMappingURL=index.d.ts.map

View file

@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../cypress/plugins/index.js"],"names":[],"mappings":"AAaiB,sDAGhB"}

View file

@ -0,0 +1 @@
//# sourceMappingURL=commands.d.ts.map

View file

@ -0,0 +1 @@
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../cypress/support/commands.js"],"names":[],"mappings":""}

2
public/types/cypress/support/e2e.d.ts vendored Normal file
View file

@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=e2e.d.ts.map

View file

@ -0,0 +1 @@
{"version":3,"file":"e2e.d.ts","sourceRoot":"","sources":["../../../../cypress/support/e2e.js"],"names":[],"mappings":""}

View file

@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=index.d.ts.map

View file

@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../cypress/support/index.js"],"names":[],"mappings":""}

View file

@ -66,7 +66,7 @@ declare class Choices implements Choices {
hideDropdown(preventInputBlur?: boolean): this; hideDropdown(preventInputBlur?: boolean): this;
getValue(valueOnly?: boolean): string[] | Item[] | Item | string; getValue(valueOnly?: boolean): string[] | Item[] | Item | string;
setValue(items: string[] | Item[]): this; setValue(items: string[] | Item[]): this;
setChoiceByValue(value: string): this; setChoiceByValue(value: string | string[]): this;
/** /**
* Set choices of select input via an array of objects (or function that returns array of object or promise of it), * Set choices of select input via an array of objects (or function that returns array of object or promise of it),
* a value field name and a label field name. * a value field name and a label field name.

File diff suppressed because one or more lines are too long

View file

@ -1,2 +1,2 @@
export declare type ActionType = 'ADD_CHOICE' | 'FILTER_CHOICES' | 'ACTIVATE_CHOICES' | 'CLEAR_CHOICES' | 'ADD_GROUP' | 'ADD_ITEM' | 'REMOVE_ITEM' | 'HIGHLIGHT_ITEM' | 'CLEAR_ALL' | 'RESET_TO' | 'SET_IS_LOADING'; export type ActionType = 'ADD_CHOICE' | 'FILTER_CHOICES' | 'ACTIVATE_CHOICES' | 'CLEAR_CHOICES' | 'ADD_GROUP' | 'ADD_ITEM' | 'REMOVE_ITEM' | 'HIGHLIGHT_ITEM' | 'CLEAR_ALL' | 'RESET_TO' | 'SET_IS_LOADING';
//# sourceMappingURL=action-type.d.ts.map //# sourceMappingURL=action-type.d.ts.map

View file

@ -1 +1 @@
{"version":3,"file":"action-type.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/interfaces/action-type.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU,GAClB,YAAY,GACZ,gBAAgB,GAChB,kBAAkB,GAClB,eAAe,GACf,WAAW,GACX,UAAU,GACV,aAAa,GACb,gBAAgB,GAChB,WAAW,GACX,UAAU,GACV,gBAAgB,CAAC"} {"version":3,"file":"action-type.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/interfaces/action-type.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAClB,YAAY,GACZ,gBAAgB,GAChB,kBAAkB,GAClB,eAAe,GACf,WAAW,GACX,UAAU,GACV,aAAa,GACb,gBAAgB,GAChB,WAAW,GACX,UAAU,GACV,gBAAgB,CAAC"}

View file

@ -1,2 +1,2 @@
export declare type EventType = 'addItem' | 'removeItem' | 'highlightItem' | 'unhighlightItem' | 'choice' | 'change' | 'search' | 'showDropdown' | 'hideDropdown' | 'highlightChoice'; export type EventType = 'addItem' | 'removeItem' | 'highlightItem' | 'unhighlightItem' | 'choice' | 'change' | 'search' | 'showDropdown' | 'hideDropdown' | 'highlightChoice';
//# sourceMappingURL=event-type.d.ts.map //# sourceMappingURL=event-type.d.ts.map

View file

@ -1 +1 @@
{"version":3,"file":"event-type.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/interfaces/event-type.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS,GACjB,SAAS,GACT,YAAY,GACZ,eAAe,GACf,iBAAiB,GACjB,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,cAAc,GACd,cAAc,GACd,iBAAiB,CAAC"} {"version":3,"file":"event-type.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/interfaces/event-type.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,YAAY,GACZ,eAAe,GACf,iBAAiB,GACjB,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,cAAc,GACd,cAAc,GACd,iBAAiB,CAAC"}

View file

@ -412,7 +412,7 @@ export interface Options {
*/ */
fuseOptions: Fuse.IFuseOptions<Choices>; fuseOptions: Fuse.IFuseOptions<Choices>;
/** /**
* ID of the connected label to improve a11y. If set, aria-labeledby will be added. * ID of the connected label to improve a11y. If set, aria-labelledby will be added.
*/ */
labelId: string; labelId: string;
/** /**

View file

@ -1,2 +1,2 @@
export declare type PassedElementType = 'text' | 'select-one' | 'select-multiple'; export type PassedElementType = 'text' | 'select-one' | 'select-multiple';
//# sourceMappingURL=passed-element-type.d.ts.map //# sourceMappingURL=passed-element-type.d.ts.map

View file

@ -1 +1 @@
{"version":3,"file":"passed-element-type.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/interfaces/passed-element-type.ts"],"names":[],"mappings":"AAAA,oBAAY,iBAAiB,GAAG,MAAM,GAAG,YAAY,GAAG,iBAAiB,CAAC"} {"version":3,"file":"passed-element-type.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/interfaces/passed-element-type.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,YAAY,GAAG,iBAAiB,CAAC"}

View file

@ -1,2 +1,2 @@
export declare type PositionOptionsType = 'auto' | 'top' | 'bottom'; export type PositionOptionsType = 'auto' | 'top' | 'bottom';
//# sourceMappingURL=position-options-type.d.ts.map //# sourceMappingURL=position-options-type.d.ts.map

View file

@ -1 +1 @@
{"version":3,"file":"position-options-type.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/interfaces/position-options-type.ts"],"names":[],"mappings":"AAAA,oBAAY,mBAAmB,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC"} {"version":3,"file":"position-options-type.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/interfaces/position-options-type.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC"}

View file

@ -23,5 +23,6 @@ export declare const cloneObject: (obj: object) => object;
* Returns an array of keys present on the first but missing on the second object * Returns an array of keys present on the first but missing on the second object
*/ */
export declare const diff: (a: Record<string, any>, b: Record<string, any>) => string[]; export declare const diff: (a: Record<string, any>, b: Record<string, any>) => string[];
export declare const parseCustomProperties: (customProperties: any) => any;
export {}; export {};
//# sourceMappingURL=utils.d.ts.map //# sourceMappingURL=utils.d.ts.map

View file

@ -1 +1 @@
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/lib/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,eAAO,MAAM,eAAe,QAAS,MAAM,OAAO,MAAM,KAAG,MACZ,CAAC;AAEhD,eAAO,MAAM,aAAa,WAAY,MAAM,KAAG,MAC6B,CAAC;AAE7E,eAAO,MAAM,UAAU,YACZ,gBAAgB,GAAG,iBAAiB,UACrC,MAAM,KACb,MASF,CAAC;AAEF,eAAO,MAAM,OAAO,QAAS,GAAG,KAAG,MACe,CAAC;AAEnD,eAAO,MAAM,MAAM,SAAU,MAAM,OAAO,GAAG,KAAG,OACY,CAAC;AAE7D,eAAO,MAAM,IAAI,YACN,WAAW,YACX,WAAW,KACnB,WAUF,CAAC;AAEF,eAAO,MAAM,aAAa,YACf,OAAO,YACN,MAAM,yBAEf,OAYF,CAAC;AAEF,eAAO,MAAM,kBAAkB,YACpB,WAAW,UACZ,WAAW,yBAElB,OAkBF,CAAC;AAEF,eAAO,MAAM,QAAQ,sCAUpB,CAAC;AAEF,eAAO,MAAM,OAAO,QAAe,MAAM,KAAK,OAc1C,CAAC;AAEL,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,eAAO,MAAM,WAAW,qBACI,eAAe,oCACE,eAAe,KACzD,MAKC,CAAC;AAEL,eAAO,MAAM,WAAW,MACnB,KAAK,MAAM,EAAE,OAAO,CAAC,KACrB,KAAK,MAAM,EAAE,OAAO,CAAC,KACvB,MAKF,CAAC;AAEF,eAAO,MAAM,aAAa,YACf,WAAW,QACd,SAAS,eACH,MAAM,GAAG,IAAI,KACxB,OAQF,CAAC;AAEF,eAAO,MAAM,aAAa,UACjB,GAAG,EAAE,SACL,MAAM,mBAEZ,OAOC,CAAC;AAEL,eAAO,MAAM,WAAW,QAAS,MAAM,KAAG,MACT,CAAC;AAElC;;GAEG;AACH,eAAO,MAAM,IAAI,MACZ,OAAO,MAAM,EAAE,GAAG,CAAC,KACnB,OAAO,MAAM,EAAE,GAAG,CAAC,KACrB,MAAM,EAKR,CAAC"} {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/lib/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,eAAO,MAAM,eAAe,QAAS,MAAM,OAAO,MAAM,KAAG,MACZ,CAAC;AAEhD,eAAO,MAAM,aAAa,WAAY,MAAM,KAAG,MAC6B,CAAC;AAE7E,eAAO,MAAM,UAAU,YACZ,gBAAgB,GAAG,iBAAiB,UACrC,MAAM,KACb,MASF,CAAC;AAEF,eAAO,MAAM,OAAO,QAAS,GAAG,KAAG,MACe,CAAC;AAEnD,eAAO,MAAM,MAAM,SAAU,MAAM,OAAO,GAAG,KAAG,OACY,CAAC;AAE7D,eAAO,MAAM,IAAI,YACN,WAAW,YACX,WAAW,KACnB,WAUF,CAAC;AAEF,eAAO,MAAM,aAAa,YACf,OAAO,YACN,MAAM,yBAEf,OAYF,CAAC;AAEF,eAAO,MAAM,kBAAkB,YACpB,WAAW,UACZ,WAAW,yBAElB,OAkBF,CAAC;AAEF,eAAO,MAAM,QAAQ,sCAUpB,CAAC;AAEF,eAAO,MAAM,OAAO,QAAe,MAAM,KAAK,OAc1C,CAAC;AAEL,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,eAAO,MAAM,WAAW,qBACI,eAAe,oCACE,eAAe,KACzD,MAKC,CAAC;AAEL,eAAO,MAAM,WAAW,MACnB,KAAK,MAAM,EAAE,OAAO,CAAC,KACrB,KAAK,MAAM,EAAE,OAAO,CAAC,KACvB,MAKF,CAAC;AAEF,eAAO,MAAM,aAAa,YACf,WAAW,QACd,SAAS,eACH,MAAM,GAAG,IAAI,KACxB,OAQF,CAAC;AAEF,eAAO,MAAM,aAAa,UACjB,GAAG,EAAE,SACL,MAAM,mBAEZ,OAOC,CAAC;AAEL,eAAO,MAAM,WAAW,QAAS,MAAM,KAAG,MACT,CAAC;AAElC;;GAEG;AACH,eAAO,MAAM,IAAI,MACZ,OAAO,MAAM,EAAE,GAAG,CAAC,KACnB,OAAO,MAAM,EAAE,GAAG,CAAC,KACrB,MAAM,EAKR,CAAC;AAEF,eAAO,MAAM,qBAAqB,6BAAuB,GAUxD,CAAC"}

View file

@ -2,7 +2,7 @@ import { AddChoiceAction, FilterChoicesAction, ActivateChoicesAction, ClearChoic
import { AddItemAction, RemoveItemAction } from '../actions/items'; import { AddItemAction, RemoveItemAction } from '../actions/items';
import { Choice } from '../interfaces/choice'; import { Choice } from '../interfaces/choice';
export declare const defaultState: never[]; export declare const defaultState: never[];
declare type ActionTypes = AddChoiceAction | FilterChoicesAction | ActivateChoicesAction | ClearChoicesAction | AddItemAction | RemoveItemAction | Record<string, never>; type ActionTypes = AddChoiceAction | FilterChoicesAction | ActivateChoicesAction | ClearChoicesAction | AddItemAction | RemoveItemAction | Record<string, never>;
export default function choices(state?: Choice[], action?: ActionTypes): Choice[]; export default function choices(state?: Choice[], action?: ActionTypes): Choice[];
export {}; export {};
//# sourceMappingURL=choices.d.ts.map //# sourceMappingURL=choices.d.ts.map

View file

@ -1 +1 @@
{"version":3,"file":"choices.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/reducers/choices.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,eAAO,MAAM,YAAY,SAAK,CAAC;AAE/B,aAAK,WAAW,GACZ,eAAe,GACf,mBAAmB,GACnB,qBAAqB,GACrB,kBAAkB,GAClB,aAAa,GACb,gBAAgB,GAChB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE1B,MAAM,CAAC,OAAO,UAAU,OAAO,CAC7B,KAAK,GAAE,MAAM,EAAiB,EAC9B,MAAM,GAAE,WAAgB,GACvB,MAAM,EAAE,CAwGV"} {"version":3,"file":"choices.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/reducers/choices.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,eAAO,MAAM,YAAY,SAAK,CAAC;AAE/B,KAAK,WAAW,GACZ,eAAe,GACf,mBAAmB,GACnB,qBAAqB,GACrB,kBAAkB,GAClB,aAAa,GACb,gBAAgB,GAChB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE1B,MAAM,CAAC,OAAO,UAAU,OAAO,CAC7B,KAAK,GAAE,MAAM,EAAiB,EAC9B,MAAM,GAAE,WAAgB,GACvB,MAAM,EAAE,CAwGV"}

View file

@ -3,7 +3,7 @@ import { ClearChoicesAction } from '../actions/choices';
import { Group } from '../interfaces/group'; import { Group } from '../interfaces/group';
import { State } from '../interfaces/state'; import { State } from '../interfaces/state';
export declare const defaultState: never[]; export declare const defaultState: never[];
declare type ActionTypes = AddGroupAction | ClearChoicesAction | Record<string, never>; type ActionTypes = AddGroupAction | ClearChoicesAction | Record<string, never>;
export default function groups(state?: Group[], action?: ActionTypes): State['groups']; export default function groups(state?: Group[], action?: ActionTypes): State['groups'];
export {}; export {};
//# sourceMappingURL=groups.d.ts.map //# sourceMappingURL=groups.d.ts.map

View file

@ -1 +1 @@
{"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/reducers/groups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,eAAO,MAAM,YAAY,SAAK,CAAC;AAE/B,aAAK,WAAW,GAAG,cAAc,GAAG,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE/E,MAAM,CAAC,OAAO,UAAU,MAAM,CAC5B,KAAK,GAAE,KAAK,EAAiB,EAC7B,MAAM,GAAE,WAAgB,GACvB,KAAK,CAAC,QAAQ,CAAC,CAwBjB"} {"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/reducers/groups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,eAAO,MAAM,YAAY,SAAK,CAAC;AAE/B,KAAK,WAAW,GAAG,cAAc,GAAG,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE/E,MAAM,CAAC,OAAO,UAAU,MAAM,CAC5B,KAAK,GAAE,KAAK,EAAiB,EAC7B,MAAM,GAAE,WAAgB,GACvB,KAAK,CAAC,QAAQ,CAAC,CAwBjB"}

View file

@ -2,7 +2,7 @@ import { AddItemAction, RemoveItemAction, HighlightItemAction } from '../actions
import { Item } from '../interfaces/item'; import { Item } from '../interfaces/item';
import { State } from '../interfaces/state'; import { State } from '../interfaces/state';
export declare const defaultState: never[]; export declare const defaultState: never[];
declare type ActionTypes = AddItemAction | RemoveItemAction | HighlightItemAction | Record<string, never>; type ActionTypes = AddItemAction | RemoveItemAction | HighlightItemAction | Record<string, never>;
export default function items(state?: Item[], action?: ActionTypes): State['items']; export default function items(state?: Item[], action?: ActionTypes): State['items'];
export {}; export {};
//# sourceMappingURL=items.d.ts.map //# sourceMappingURL=items.d.ts.map

View file

@ -1 +1 @@
{"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/reducers/items.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,eAAO,MAAM,YAAY,SAAK,CAAC;AAE/B,aAAK,WAAW,GACZ,aAAa,GACb,gBAAgB,GAChB,mBAAmB,GACnB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE1B,MAAM,CAAC,OAAO,UAAU,KAAK,CAC3B,KAAK,GAAE,IAAI,EAAiB,EAC5B,MAAM,GAAE,WAAgB,GACvB,KAAK,CAAC,OAAO,CAAC,CA0DhB"} {"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/reducers/items.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,eAAO,MAAM,YAAY,SAAK,CAAC;AAE/B,KAAK,WAAW,GACZ,aAAa,GACb,gBAAgB,GAChB,mBAAmB,GACnB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE1B,MAAM,CAAC,OAAO,UAAU,KAAK,CAC3B,KAAK,GAAE,IAAI,EAAiB,EAC5B,MAAM,GAAE,WAAgB,GACvB,KAAK,CAAC,OAAO,CAAC,CA0DhB"}

View file

@ -1,7 +1,7 @@
import { SetIsLoadingAction } from '../actions/misc'; import { SetIsLoadingAction } from '../actions/misc';
import { State } from '../interfaces/state'; import { State } from '../interfaces/state';
export declare const defaultState = false; export declare const defaultState = false;
declare type ActionTypes = SetIsLoadingAction | Record<string, never>; type ActionTypes = SetIsLoadingAction | Record<string, never>;
declare const general: (state?: boolean, action?: ActionTypes) => State['loading']; declare const general: (state?: boolean, action?: ActionTypes) => State['loading'];
export default general; export default general;
//# sourceMappingURL=loading.d.ts.map //# sourceMappingURL=loading.d.ts.map

View file

@ -1 +1 @@
{"version":3,"file":"loading.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/reducers/loading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,aAAK,WAAW,GAAG,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE9D,QAAA,MAAM,OAAO,6BAEH,WAAW,KAClB,KAAK,CAAC,SAAS,CAUjB,CAAC;AAEF,eAAe,OAAO,CAAC"} {"version":3,"file":"loading.d.ts","sourceRoot":"","sources":["../../../../../src/scripts/reducers/loading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,KAAK,WAAW,GAAG,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE9D,QAAA,MAAM,OAAO,6BAEH,WAAW,KAClB,KAAK,CAAC,SAAS,CAUjB,CAAC;AAEF,eAAe,OAAO,CAAC"}

View file

@ -6,7 +6,7 @@ import { Choice } from './interfaces/choice';
import { Group } from './interfaces/group'; import { Group } from './interfaces/group';
import { Item } from './interfaces/item'; import { Item } from './interfaces/item';
import { PassedElementType } from './interfaces/passed-element-type'; import { PassedElementType } from './interfaces/passed-element-type';
declare type TemplateOptions = Record<'classNames' | 'allowHTML', any>; type TemplateOptions = Record<'classNames' | 'allowHTML', any>;
declare const templates: { declare const templates: {
containerOuter({ classNames: { containerOuter } }: TemplateOptions, dir: HTMLElement['dir'], isSelectElement: boolean, isSelectOneElement: boolean, searchEnabled: boolean, passedElementType: PassedElementType, labelId: string): HTMLDivElement; containerOuter({ classNames: { containerOuter } }: TemplateOptions, dir: HTMLElement['dir'], isSelectElement: boolean, isSelectOneElement: boolean, searchEnabled: boolean, passedElementType: PassedElementType, labelId: string): HTMLDivElement;
containerInner({ classNames: { containerInner }, }: TemplateOptions): HTMLDivElement; containerInner({ classNames: { containerInner }, }: TemplateOptions): HTMLDivElement;

View file

@ -1 +1 @@
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../../src/scripts/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGrE,aAAK,eAAe,GAAG,MAAM,CAAC,YAAY,GAAG,WAAW,EAAE,GAAG,CAAC,CAAC;AAE/D,QAAA,MAAM,SAAS;uDAEyB,eAAe,OAC9C,WAAW,CAAC,KAAK,CAAC,mBACN,OAAO,sBACJ,OAAO,iBACZ,OAAO,qBACH,iBAAiB,WAC3B,MAAM,GACd,cAAc;wDAiCd,eAAe,GAAG,cAAc;8DAOgB,eAAe,sBAC5C,OAAO,GAC1B,cAAc;4DAO6B,eAAe,SACpD,MAAM,GACZ,cAAc;uGAiBZ,eAAe,sGAUf,IAAI,oBACW,OAAO,GACxB,cAAc;yCAmDW,eAAe,sBACrB,OAAO,GAC1B,cAAc;mFAiBZ,eAAe,2BACO,KAAK,GAC7B,cAAc;wHAsCZ,eAAe,qHAUf,MAAM,cACG,MAAM,GACjB,cAAc;kDAqCyB,eAAe,oBACrC,MAAM,GACvB,gBAAgB;sDAmBhB,eAAe,GAAG,cAAc;mFAa9B,eAAe,aACP,MAAM,SACX,YAAY,GAAG,YAAY,GAAG,EAAE,GACrC,cAAc;kEAqBd,IAAI,GAAG,iBAAiB;CAW5B,CAAC;AAEF,eAAe,SAAS,CAAC"} {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../../src/scripts/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGrE,KAAK,eAAe,GAAG,MAAM,CAAC,YAAY,GAAG,WAAW,EAAE,GAAG,CAAC,CAAC;AAE/D,QAAA,MAAM,SAAS;uDAEyB,eAAe,OAC9C,WAAW,CAAC,KAAK,CAAC,mBACN,OAAO,sBACJ,OAAO,iBACZ,OAAO,qBACH,iBAAiB,WAC3B,MAAM,GACd,cAAc;wDAiCd,eAAe,GAAG,cAAc;8DAOgB,eAAe,sBAC5C,OAAO,GAC1B,cAAc;4DAO6B,eAAe,SACpD,MAAM,GACZ,cAAc;uGAiBZ,eAAe,sGAUf,IAAI,oBACW,OAAO,GACxB,cAAc;yCAmDW,eAAe,sBACrB,OAAO,GAC1B,cAAc;mFAiBZ,eAAe,2BACO,KAAK,GAC7B,cAAc;wHAsCZ,eAAe,qHAUf,MAAM,cACG,MAAM,GACjB,cAAc;kDAqCyB,eAAe,oBACrC,MAAM,GACvB,gBAAgB;sDAmBhB,eAAe,GAAG,cAAc;mFAa9B,eAAe,aACP,MAAM,SACX,YAAY,GAAG,YAAY,GAAG,EAAE,GACrC,cAAc;kEAqBd,IAAI,GAAG,iBAAiB;CAW5B,CAAC;AAEF,eAAe,SAAS,CAAC"}

View file

@ -46,6 +46,7 @@ import {
isType, isType,
sortByScore, sortByScore,
strToEl, strToEl,
parseCustomProperties,
} from './lib/utils'; } from './lib/utils';
import { defaultState } from './reducers'; import { defaultState } from './reducers';
import Store from './store/store'; import Store from './store/store';
@ -290,7 +291,9 @@ class Choices implements Choices {
disabled: option.disabled || option.parentNode.disabled, disabled: option.disabled || option.parentNode.disabled,
placeholder: placeholder:
option.value === '' || option.hasAttribute('placeholder'), option.value === '' || option.hasAttribute('placeholder'),
customProperties: option.dataset['custom-properties'], customProperties: parseCustomProperties(
option.dataset.customProperties,
),
}); });
}); });
} }
@ -553,7 +556,7 @@ class Choices implements Choices {
return this; return this;
} }
setChoiceByValue(value: string): this { setChoiceByValue(value: string | string[]): this {
if (!this.initialised || this._isTextElement) { if (!this.initialised || this._isTextElement) {
return this; return this;
} }
@ -1438,7 +1441,8 @@ class Choices implements Choices {
const hasActiveDropdown = this.dropdown.isActive; const hasActiveDropdown = this.dropdown.isActive;
const hasItems = this.itemList.hasChildren(); const hasItems = this.itemList.hasChildren();
const keyString = String.fromCharCode(keyCode); const keyString = String.fromCharCode(keyCode);
const wasAlphaNumericChar = /[a-zA-Z0-9-_ ]/.test(keyString); // eslint-disable-next-line no-control-regex
const wasPrintableChar = /[^\x00-\x1F]/.test(keyString);
const { const {
BACK_KEY, BACK_KEY,
@ -1452,7 +1456,7 @@ class Choices implements Choices {
PAGE_DOWN_KEY, PAGE_DOWN_KEY,
} = KEY_CODES; } = KEY_CODES;
if (!this._isTextElement && !hasActiveDropdown && wasAlphaNumericChar) { if (!this._isTextElement && !hasActiveDropdown && wasPrintableChar) {
this.showDropdown(); this.showDropdown();
if (!this.input.isFocussed) { if (!this.input.isFocussed) {
@ -1461,7 +1465,7 @@ class Choices implements Choices {
the input was not focussed at the time of key press the input was not focussed at the time of key press
therefore does not have the value of the key. therefore does not have the value of the key.
*/ */
this.input.value += keyString.toLowerCase(); this.input.value += event.key.toLowerCase();
} }
} }

View file

@ -454,7 +454,7 @@ export interface Options {
fuseOptions: Fuse.IFuseOptions<Choices>; fuseOptions: Fuse.IFuseOptions<Choices>;
/** /**
* ID of the connected label to improve a11y. If set, aria-labeledby will be added. * ID of the connected label to improve a11y. If set, aria-labelledby will be added.
*/ */
labelId: string; labelId: string;

View file

@ -15,6 +15,7 @@ import {
sanitise, sanitise,
sortByAlpha, sortByAlpha,
sortByScore, sortByScore,
parseCustomProperties,
} from './utils'; } from './utils';
describe('utils', () => { describe('utils', () => {
@ -256,4 +257,25 @@ describe('utils', () => {
expect(output).to.deep.equal(['baz']); expect(output).to.deep.equal(['baz']);
}); });
}); });
describe('_parseCustomProperties', () => {
describe('when custom properties are valid json', () => {
it('returns the properties as object', () => {
const customProperties = '{"description": "foo", "bar": "foo"}';
const result = { description: 'foo', bar: 'foo' };
const value = parseCustomProperties(customProperties);
expect(value).to.eql(result);
});
});
describe('when custom properties are undefined', () => {
it('returns an empty object', () => {
const customProperties = undefined;
const result = {};
const value = parseCustomProperties(customProperties);
expect(value).to.eql(result);
});
});
});
}); });

View file

@ -180,3 +180,15 @@ export const diff = (
return aKeys.filter((i) => bKeys.indexOf(i) < 0); return aKeys.filter((i) => bKeys.indexOf(i) < 0);
}; };
export const parseCustomProperties = (customProperties): any => {
if (typeof customProperties !== 'undefined') {
try {
return JSON.parse(customProperties);
} catch (e) {
return customProperties;
}
}
return {};
};

View file

@ -95,7 +95,7 @@ describe('templates', () => {
tabindex="0" tabindex="0"
aria-haspopup="true" aria-haspopup="true"
aria-expanded="false" aria-expanded="false"
aria-labeledby="${labelId}" aria-labelledby="${labelId}"
dir="${direction}" dir="${direction}"
> >
</div> </div>

View file

@ -45,7 +45,7 @@ const templates = {
div.setAttribute('aria-haspopup', 'true'); div.setAttribute('aria-haspopup', 'true');
div.setAttribute('aria-expanded', 'false'); div.setAttribute('aria-expanded', 'false');
if (labelId) { if (labelId) {
div.setAttribute('aria-labeledby', labelId); div.setAttribute('aria-labelledby', labelId);
} }
return div; return div;

View file

@ -23,7 +23,7 @@ $choices-button-dimension: 8px !default;
$choices-button-offset: 8px !default; $choices-button-offset: 8px !default;
$choices-icon-cross: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==") !default; $choices-icon-cross: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==") !default;
$choices-icon-cross-inverse: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==") !default; $choices-icon-cross-inverse: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==") !default;
$choices-z-index: 1; $choices-z-index: 1 !default;
.#{$choices-selector} { .#{$choices-selector} {
position: relative; position: relative;