diff --git a/.all-contributorsrc b/.all-contributorsrc index fe2b12f12f..f1989fb7b2 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -658,10 +658,29 @@ "contributions": [ "security" ] + }, + { + "login": "alvarolm", + "name": "Alvaro", + "avatar_url": "https://avatars.githubusercontent.com/u/2561547?v=4", + "profile": "https://twitter.com/alvarofleiva", + "contributions": [ + "code" + ] + }, + { + "login": "Festiis", + "name": "Festim Nuredini", + "avatar_url": "https://avatars.githubusercontent.com/u/44016065?v=4", + "profile": "https://github.com/Festiis", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 4, "repoType": "github", "repoHost": "https://github.com", - "skipCi": true + "skipCi": true, + "commitType": "docs" } diff --git a/.eslintrc.js b/.eslintrc.js index 133dcb1a60..a82afbceab 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -20,6 +20,7 @@ module.exports = { '/test/helpers', ], rules: { + 'brace-style': ['error', '1tbs'], 'class-methods-use-this': 'off', 'comma-dangle': ['error', { arrays: 'always-multiline', @@ -120,4 +121,20 @@ module.exports = { globals: { jQuery: true, }, + overrides: [{ + files: ['**/*.ts'], + parser: '@typescript-eslint/parser', + extends: [ + 'plugin:@typescript-eslint/recommended', + ], + rules: { + // https://typescript-eslint.io/rules/no-use-before-define#how-to-use + 'no-use-before-define': 'off', + + // TODO rules with a lot of errors to be fixed manually, fix in a separate PR + '@typescript-eslint/ban-types': 'off', // 16 eslint errors only, help wanted! + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/triple-slash-reference': 'off', + }, + }], }; diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 6a2bbeca09..9833ea579e 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,3 +1,3 @@ # These are supported funding model platforms -github: [y0hami, lubber-de] +github: [lubber-de] diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7ad6c6bcfe..97e7b45a0d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 - name: Install dependencies run: yarn && yarn add -D eslint-config-airbnb-base@^15 eslint-plugin-unicorn@^46 eslint-plugin-jest@^26.9.0 @typescript-eslint/eslint-plugin @typescript-eslint/parser typescript - name: Lint JS and LESS files @@ -30,7 +30,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Setup Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - name: pre-install @@ -48,11 +48,11 @@ jobs: security-events: write steps: - uses: actions/checkout@v4 - - uses: github/codeql-action/init@v2 + - uses: github/codeql-action/init@v3 with: languages: 'javascript' config-file: ./.github/codeql/codeql-config.yml - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@v3 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/depsreview.yml b/.github/workflows/depsreview.yml new file mode 100644 index 0000000000..b9d6d20fff --- /dev/null +++ b/.github/workflows/depsreview.yml @@ -0,0 +1,14 @@ +name: 'Dependency Review' +on: [pull_request] + +permissions: + contents: read + +jobs: + dependency-review: + runs-on: ubuntu-latest + steps: + - name: 'Checkout Repository' + uses: actions/checkout@v4 + - name: 'Dependency Review' + uses: actions/dependency-review-action@v4 diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 43b8930ef5..fbdcf05e3c 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -16,7 +16,7 @@ jobs: - uses: actions/checkout@v4 with: ref: develop - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: 18 registry-url: https://registry.npmjs.org/ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 80561a03a2..8953166c67 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v4 with: ref: master - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: 18 registry-url: https://registry.npmjs.org/ diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 6126e574c0..0f630bf4eb 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -106,6 +106,8 @@ This is a list of all project contributors powered by [All Contributors](https:/ Mathieu Mitchell
Mathieu Mitchell

💻 Brian McCluskey
Brian McCluskey

🛡️ + Alvaro
Alvaro

💻 + Festim Nuredini
Festim Nuredini

💻 diff --git a/README.md b/README.md index 0c2ef3937f..e81b9118e8 100644 --- a/README.md +++ b/README.md @@ -69,8 +69,8 @@ Fomantic includes an interactive installer to help setup your project. | Environment | Install Command | Repository | Third-Party | |-------------|---------------------------------------|------------------------------------------------------------------|-------------| -| CSS Only | `npm install fomantic-ui-css` | [Fomantic-UI-CSS](https://github.com/fomantic/Fomantic-UI-CSS) | | -| LESS | `npm install fomantic-ui-less` | [Fomantic-UI-LESS](https://github.com/fomantic/Fomantic-UI-LESS) | | +| CSS Only | `npm install fomantic-ui-css` | [Fomantic-UI-CSS](https://github.com/fomantic/Fomantic-UI-CSS) | | +| LESS | `npm install fomantic-ui-less` | [Fomantic-UI-LESS](https://github.com/fomantic/Fomantic-UI-LESS) | | | SASS | `gem 'fomantic-ui-sass'` | [Fomantic-UI-SASS](https://github.com/fomantic/Fomantic-UI-SASS) | ✅ | --- @@ -94,20 +94,10 @@ Before creating a pull request be sure to read the [Contributing Guide](CONTRIBU ## Sponsors -### Infrastructure hosted and powered by [DigitalOcean](https://www.digitalocean.com/?utm_medium=opensource&utm_source=fomantic) -[![DigitalOcean](https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PNG/DO_Logo_Horizontal_Blue.png)](https://www.digitalocean.com/?utm_medium=opensource&utm_source=fomantic) - -Sign up now and get $100 in credit for 60 days! [Sign up here!](https://m.do.co/c/bece3e1afb7f) - - ### Cross-browser testing provided by [BrowserStack](https://www.browserstack.com) [![BrowserStack](https://cdn.rawgit.com/fomantic/Fomantic-UI-Docs/35180e95/server/raw/images/browserstack.png)](https://www.browserstack.com) - ### IDE's provided by [JetBrains](https://www.jetbrains.com?from=Fomantic-UI) [![JetBrains](https://fomantic-ui.com/images/jetbrains.svg)](https://www.jetbrains.com?from=Fomantic-UI) --- - -#### Credit -Semantic-UI was beautifully crafted by [@jlukic](https://github.com/jlukic) diff --git a/package.json b/package.json index b97153c4f7..b36c3925ab 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,8 @@ "scripts": { "build": "gulp build", "changelog": "auto-changelog -p", - "lint": "eslint --ext .js . && stylelint \"**/*.{css,less,overrides,variables}\"", - "lint-fix": "eslint --ext .js . --fix && stylelint \"**/*.{css,less,overrides,variables}\" --fix" + "lint": "eslint --ext .js,.ts . && stylelint \"**/*.{css,less,overrides,variables}\"", + "lint-fix": "eslint --ext .js,.ts . --fix && stylelint \"**/*.{css,less,overrides,variables}\" --fix" }, "dependencies": { "@actions/core": "^1.6.0", diff --git a/src/definitions/behaviors/api.js b/src/definitions/behaviors/api.js index 11aa1ae2a6..ce55a19028 100644 --- a/src/definitions/behaviors/api.js +++ b/src/definitions/behaviors/api.js @@ -647,7 +647,9 @@ module.debug('Adding error state'); module.set.error(); if (module.should.removeError()) { - setTimeout(function () { module.remove.error(); }, settings.errorDuration); + setTimeout(function () { + module.remove.error(); + }, settings.errorDuration); } } module.debug('API Request failed', errorMessage, xhr); @@ -971,7 +973,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/behaviors/form.js b/src/definitions/behaviors/form.js index 1ae8306b1e..e577aaa64a 100644 --- a/src/definitions/behaviors/form.js +++ b/src/definitions/behaviors/form.js @@ -538,6 +538,13 @@ fullFields[name].rules.push({ type: rule }); }); } + + $.each(fullFields[name].rules, function (index, rule) { + var ruleName = module.get.ruleName(rule); + if (ruleName === 'empty') { + module.warn('*** DEPRECATED *** : Rule "empty" for field "' + name + '" will be removed in a future version. -> Use "notEmpty" rule instead.'); + } + }); }); return fullFields; @@ -551,9 +558,10 @@ ancillary = module.get.ancillaryValue(rule), $field = module.get.field(field.identifier), value = $field.val(), - prompt = isFunction(rule.prompt) - ? rule.prompt(value) - : rule.prompt || settings.prompt[ruleName] || settings.text.unspecifiedRule, + promptCheck = rule.prompt || settings.prompt[ruleName] || settings.text.unspecifiedRule, + prompt = String(isFunction(promptCheck) + ? promptCheck.call($field[0], value) + : promptCheck), requiresValue = prompt.search('{value}') !== -1, requiresName = prompt.search('{name}') !== -1, parts, @@ -591,10 +599,10 @@ }, settings: function () { if ($.isPlainObject(parameters)) { - if (parameters.fields) { - parameters.fields = module.get.fieldsFromShorthand(parameters.fields); - } settings = $.extend(true, {}, $.fn.form.settings, parameters); + if (settings.fields) { + settings.fields = module.get.fieldsFromShorthand(settings.fields); + } validation = $.extend(true, {}, $.fn.form.settings.defaults, settings.fields); module.verbose('Extending settings', validation, settings); } else { @@ -619,7 +627,7 @@ // refresh selector cache (instance || module).refresh(); }, - field: function (identifier, strict) { + field: function (identifier, strict, ignoreMissing) { module.verbose('Finding field with identifier', identifier); identifier = module.escape.string(identifier); var t; @@ -639,7 +647,9 @@ if (t.length > 0) { return t; } - module.error(error.noField.replace('{identifier}', identifier)); + if (!ignoreMissing) { + module.error(error.noField.replace('{identifier}', identifier)); + } return strict ? $() : $(''); }, @@ -709,7 +719,7 @@ var $field = $(field), $calendar = $field.closest(selector.uiCalendar), - name = $field.prop('name'), + name = $field.prop('name') || $field.prop('id'), value = $field.val(), isCheckbox = $field.is(selector.checkbox), isRadio = $field.is(selector.radio), @@ -817,10 +827,10 @@ has: { - field: function (identifier) { + field: function (identifier, ignoreMissing) { module.verbose('Checking for existence of a field with identifier', identifier); - return module.get.field(identifier, true).length > 0; + return module.get.field(identifier, true, ignoreMissing).length > 0; }, }, @@ -1020,7 +1030,7 @@ } if (rule === undefined) { module.debug('Removed all rules'); - if (module.has.field(field)) { + if (module.has.field(field, true)) { validation[field].rules = []; } else { delete validation[field]; @@ -1221,7 +1231,7 @@ module.debug('Enabling auto check on required fields'); if (validation) { $.each(validation, function (fieldName) { - if (!module.has.field(fieldName)) { + if (!module.has.field(fieldName, true)) { module.verbose('Field not found, removing from validation', fieldName); module.remove.field(fieldName); } @@ -1235,20 +1245,20 @@ isRequired = $el.prop('required') || $elGroup.hasClass(className.required) || $elGroup.parent().hasClass(className.required), isDisabled = $el.is(':disabled') || $elGroup.hasClass(className.disabled) || $elGroup.parent().hasClass(className.disabled), validation = module.get.validation($el), - hasEmptyRule = validation + hasNotEmptyRule = validation ? $.grep(validation.rules, function (rule) { - return rule.type === 'empty'; - }) !== 0 + return ['notEmpty', 'checked', 'empty'].indexOf(rule.type) >= 0; + }).length > 0 : false, identifier = module.get.identifier(validation, $el) ; - if (isRequired && !isDisabled && !hasEmptyRule && identifier !== undefined) { + if (isRequired && !isDisabled && !hasNotEmptyRule && identifier !== undefined) { if (isCheckbox) { module.verbose("Adding 'checked' rule on field", identifier); module.add.rule(identifier, 'checked'); } else { - module.verbose("Adding 'empty' rule on field", identifier); - module.add.rule(identifier, 'empty'); + module.verbose("Adding 'notEmpty' rule on field", identifier); + module.add.rule(identifier, 'notEmpty'); } } }); @@ -1340,28 +1350,30 @@ var identifier = field.identifier || fieldName, $field = module.get.field(identifier), + $fieldGroup = $field.closest($group), $dependsField = field.depends ? module.get.field(field.depends) : false, fieldValid = true, fieldErrors = [], - isDisabled = $field.filter(':not(:disabled)').length === 0, + isDisabled = $field.filter(':not(:disabled)').length === 0 || $fieldGroup.hasClass(className.disabled) || $fieldGroup.parent().hasClass(className.disabled), validationMessage = $field[0].validationMessage, + noNativeValidation = field.noNativeValidation || settings.noNativeValidation || $field.filter('[formnovalidate],[novalidate]').length > 0 || $module.filter('[novalidate]').length > 0, errorLimit ; if (!field.identifier) { module.debug('Using field name as identifier', identifier); field.identifier = identifier; } - if (validationMessage) { + if (validationMessage && !noNativeValidation && !isDisabled) { module.debug('Field is natively invalid', identifier); fieldErrors.push(validationMessage); fieldValid = false; if (showErrors) { - $field.closest($group).addClass(className.error); + $fieldGroup.addClass(className.error); } } else if (showErrors) { - $field.closest($group).removeClass(className.error); + $fieldGroup.removeClass(className.error); } if (isDisabled) { module.debug('Field is disabled. Skipping', identifier); @@ -1489,6 +1501,12 @@ module.error.apply(console, arguments); } }, + warn: function () { + if (!settings.silent) { + module.warn = Function.prototype.bind.call(console.warn, console, settings.name + ':'); + module.warn.apply(console, arguments); + } + }, performance: { log: function (message) { var @@ -1509,7 +1527,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var @@ -1603,6 +1623,7 @@ name: 'Form', namespace: 'form', + silent: false, debug: false, verbose: false, performance: true, @@ -1625,6 +1646,7 @@ errorFocus: true, dateHandling: 'date', // 'date', 'input', 'formatter' errorLimit: 0, + noNativeValidation: false, onValid: function () {}, onInvalid: function () {}, @@ -1667,6 +1689,7 @@ maxValue: '{name} must have a maximum value of {ruleValue}', minValue: '{name} must have a minimum value of {ruleValue}', empty: '{name} must have a value', + notEmpty: '{name} must have a value', checked: '{name} must be checked', email: '{name} must be a valid e-mail', url: '{name} must be a valid url', @@ -1799,10 +1822,15 @@ rules: { // is not empty or blank string - empty: function (value) { + notEmpty: function (value) { return !(value === undefined || value === '' || (Array.isArray(value) && value.length === 0)); }, + /* Deprecated */ + empty: function (value) { + return $.fn.form.settings.rules.notEmpty(value); + }, + // checkbox checked checked: function () { return $(this).filter(':checked').length > 0; diff --git a/src/definitions/behaviors/state.js b/src/definitions/behaviors/state.js index dca08a1be0..2b8127c435 100644 --- a/src/definitions/behaviors/state.js +++ b/src/definitions/behaviors/state.js @@ -482,7 +482,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/behaviors/visibility.js b/src/definitions/behaviors/visibility.js index 21252e1f67..d7c717b6e0 100755 --- a/src/definitions/behaviors/visibility.js +++ b/src/definitions/behaviors/visibility.js @@ -1088,7 +1088,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/collections/form.less b/src/definitions/collections/form.less index 0aeda3e92c..6ca284dddd 100755 --- a/src/definitions/collections/form.less +++ b/src/definitions/collections/form.less @@ -162,6 +162,11 @@ font-family: @inputFont; line-height: @textAreaLineHeight; resize: @textAreaResize; + min-height: @actionTextareaMinHeight; +} +.ui.input > textarea { + flex: 1 1 auto; + max-width: 100%; } .ui.form textarea:not([rows]) { height: @textAreaHeight; @@ -291,8 +296,10 @@ /* Auto Input */ .ui.form .fields .field .ui.input input, -.ui.form .field .ui.input input { - width: auto; +.ui.form .fields .field .ui.input textarea, +.ui.form .field .ui.input input, +.ui.form .field .ui.input textarea { + width: 100%; } & when (@variationFormEqualWidth) or (@variationFormWide) { @@ -441,7 +448,8 @@ input[type="text"]:focus, input[type="file"]:focus, input[type="url"]:focus, - input[type="week"]:focus { + input[type="week"]:focus, + textarea:focus { border-top-right-radius: 0; border-bottom-right-radius: 0; } @@ -462,7 +470,8 @@ input[type="text"], input[type="file"], input[type="url"], - input[type="week"] { + input[type="week"], + textarea { border-bottom-left-radius: 0; border-top-left-radius: 0; } @@ -857,6 +866,7 @@ .ui.form .inverted.segment label, .ui.form .inverted.segment .ui.checkbox label, .ui.inverted.form .ui.checkbox label, + .ui.inverted.form .grouped.fields > label, .ui.inverted.form .inline.fields > label, .ui.inverted.form .inline.fields .field > label, .ui.inverted.form .inline.fields .field > p, diff --git a/src/definitions/collections/grid.less b/src/definitions/collections/grid.less index e72aa2ebaa..da1a262620 100755 --- a/src/definitions/collections/grid.less +++ b/src/definitions/collections/grid.less @@ -1723,10 +1723,10 @@ border-top: none !important; } & when (@variationGridInverted) { - .ui.inverted.stackable.celled.grid > .column:not(.row), - .ui.inverted.stackable.divided.grid > .column:not(.row), - .ui.inverted.stackable.celled.grid > .row > .column, - .ui.inverted.stackable.divided.grid > .row > .column { + .ui.ui.inverted.stackable.celled.grid > .column:not(.row), + .ui.ui.inverted.stackable.divided.grid > .column:not(.row), + .ui.ui.inverted.stackable.celled.grid > .row > .column, + .ui.ui.inverted.stackable.divided.grid > .row > .column { border-top: @stackableInvertedMobileBorder; } } diff --git a/src/definitions/collections/table.less b/src/definitions/collections/table.less index 726859b151..384faf76fd 100755 --- a/src/definitions/collections/table.less +++ b/src/definitions/collections/table.less @@ -117,16 +117,16 @@ .ui.table > tfoot > tr > td:first-child { border-left: none; } -.ui.table > tfoot > tr:first-child > th:first-child, -.ui.table > tfoot > tr:first-child > td:first-child { +.ui.table > tfoot > tr:last-child > th:first-child, +.ui.table > tfoot > tr:last-child > td:first-child { border-radius: 0 0 0 @borderRadius; } -.ui.table > tfoot > tr:first-child > th:last-child, -.ui.table > tfoot > tr:first-child > td:last-child { +.ui.table > tfoot > tr:last-child > th:last-child, +.ui.table > tfoot > tr:last-child > td:last-child { border-radius: 0 0 @borderRadius 0; } -.ui.table > tfoot > tr:first-child > th:only-child, -.ui.table > tfoot > tr:first-child > td:only-child { +.ui.table > tfoot > tr:last-child > th:only-child, +.ui.table > tfoot > tr:last-child > td:only-child { border-radius: 0 0 @borderRadius @borderRadius; } @@ -458,13 +458,21 @@ display: block; overflow-y: scroll; overscroll-behavior: @overscrollBehavior; - scrollbar-width: thin; /* Firefox */ & > tr { display: table; table-layout: fixed; width: 100%; } } + & when (@useCustomScrollbars) { + @supports (-moz-appearance: none) { + .ui.scrolling.table > thead, + .ui.scrolling.table > tfoot, + .ui.scrolling.table > tbody { + scrollbar-width: thin; + } + } + } /* Camouflage scrollbars, we need them only to gain the same width as tbody */ .ui.scrolling.table > thead { @@ -492,61 +500,68 @@ background: inherit; border-radius: @borderRadius; } - - /* Firefox & IE */ - .ui.scrolling.table > thead, - .ui.scrolling.table > tfoot { - scrollbar-color: currentColor currentColor; - & when (@supportIE) { - scrollbar-face-color: currentColor; - scrollbar-shadow-color: currentColor; - scrollbar-track-color: currentColor; - scrollbar-arrow-color: currentColor; - } - } - & when (@supportIE) { - /* IE scrollbar color needs hex values */ - @media all and (-ms-high-contrast: none) { - .ui.scrolling.table > thead { - color: @headerBackgroundHex; - } + & when (@useCustomScrollbars) { + @supports (-moz-appearance: none) { + .ui.scrolling.table > thead, .ui.scrolling.table > tfoot { - color: @footerBackgroundHex; + scrollbar-color: currentColor currentColor; } - & when (@variationTableInverted) { - .ui.inverted.scrolling.table > thead { - color: @invertedHeaderBackgroundHex; + } + + & when (@supportIE) { + /* IE scrollbar color needs hex values */ + @media all and (-ms-high-contrast: none) { + .ui.scrolling.table > thead, + .ui.scrolling.table > tfoot { + scrollbar-face-color: currentColor; + scrollbar-shadow-color: currentColor; + scrollbar-track-color: currentColor; + scrollbar-arrow-color: currentColor; + } + .ui.scrolling.table > thead { + color: @headerBackgroundHex; } - .ui.inverted.scrolling.table > tfoot { - color: @invertedFooterBackgroundHex; + .ui.scrolling.table > tfoot { + color: @footerBackgroundHex; + } + & when (@variationTableInverted) { + .ui.inverted.scrolling.table > thead { + color: @invertedHeaderBackgroundHex; + } + .ui.inverted.scrolling.table > tfoot { + color: @invertedFooterBackgroundHex; + } } } } - } - & when (@variationTableInverted) { - .ui.inverted.scrolling.table > tbody::-webkit-scrollbar-track { - background: @trackInvertedBackground; - } - .ui.inverted.scrolling.table > tbody::-webkit-scrollbar-thumb { - background: @thumbInvertedBackground; - } - .ui.inverted.scrolling.table > tbody::-webkit-scrollbar-thumb:window-inactive { - background: @thumbInvertedInactiveBackground; - } - .ui.inverted.scrolling.table > tbody::-webkit-scrollbar-thumb:hover { - background: @thumbInvertedHoverBackground; - } - .ui.inverted.scrolling.table > tbody { + & when (@variationTableInverted) { + .ui.inverted.scrolling.table > tbody::-webkit-scrollbar-track { + background: @trackInvertedBackground; + } + .ui.inverted.scrolling.table > tbody::-webkit-scrollbar-thumb { + background: @thumbInvertedBackground; + } + .ui.inverted.scrolling.table > tbody::-webkit-scrollbar-thumb:window-inactive { + background: @thumbInvertedInactiveBackground; + } + .ui.inverted.scrolling.table > tbody::-webkit-scrollbar-thumb:hover { + background: @thumbInvertedHoverBackground; + } & when (@supportIE) { - /* IE11 */ - scrollbar-face-color: @thumbInvertedBackgroundHex; - scrollbar-shadow-color: @thumbInvertedBackgroundHex; - scrollbar-track-color: @trackInvertedBackgroundHex; - scrollbar-arrow-color: @trackInvertedBackgroundHex; + .ui.inverted.scrolling.table > tbody { + /* IE11 */ + scrollbar-face-color: @thumbInvertedBackgroundHex; + scrollbar-shadow-color: @thumbInvertedBackgroundHex; + scrollbar-track-color: @trackInvertedBackgroundHex; + scrollbar-arrow-color: @trackInvertedBackgroundHex; + } + } + @supports (-moz-appearance: none) { + .ui.inverted.scrolling.table > tbody { + /* firefox: first color thumb, second track */ + scrollbar-color: @thumbInvertedBackground @trackInvertedBackground; + } } - - /* firefox: first color thumb, second track */ - scrollbar-color: @thumbInvertedBackground @trackInvertedBackground; } } & when (@variationTableResizable) { diff --git a/src/definitions/elements/button.less b/src/definitions/elements/button.less index 07cf1f0b89..a01e1d206d 100755 --- a/src/definitions/elements/button.less +++ b/src/definitions/elements/button.less @@ -885,7 +885,7 @@ border-top: @basicGroupBorder; } - .ui.basic.vertical.buttons:not(.spaced) .button:first-child { + .ui.basic.vertical.buttons:not(.spaced):not(.circular) .button:first-child { border-top: none; } } @@ -1095,8 +1095,8 @@ /* -------------- Circular --------------- */ - - .ui.circular.button { + .ui.ui.circular.buttons .button, + .ui.ui.ui.ui.circular.button { border-radius: @circularBorderRadius; } @@ -1104,6 +1104,28 @@ width: @circularIconWidth; vertical-align: baseline; } + + .ui.circular.buttons:not(.vertical) .button { + margin-right: @circularGroupMargin; + } + + & when (@variationButtonVertical) { + .ui.vertical.circular.buttons .button { + margin-bottom: @circularVerticalGroupMargin; + } + } + + & when (@variationButtonBasic) { + .ui.circular.basic.buttons { + border: none; + & .button { + border: @basicGroupBorder; + &.basic { + border: none; + } + } + } + } } & when (@variationButtonOr) { diff --git a/src/definitions/elements/header.less b/src/definitions/elements/header.less index 466bf88946..132cf8918a 100755 --- a/src/definitions/elements/header.less +++ b/src/definitions/elements/header.less @@ -467,6 +467,11 @@ .ui.bottom.attached.header { border-radius: 0 0 @attachedBorderRadius @attachedBorderRadius; } + & when (@variationHeaderSeamless) { + .ui.seamless.attached:not(.bottom).header { + border-bottom: none; + } + } /* Attached Sizes */ .ui.attached.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) { diff --git a/src/definitions/elements/input.less b/src/definitions/elements/input.less index 6be2a90571..0ce389a4d9 100755 --- a/src/definitions/elements/input.less +++ b/src/definitions/elements/input.less @@ -35,7 +35,7 @@ .ui.input > input { margin: 0; max-width: 100%; - flex: 1 0 auto; + flex: 1 1 auto; outline: none; -webkit-tap-highlight-color: rgba(255, 255, 255, 0); text-align: @textAlign; @@ -524,7 +524,11 @@ .ui.form .field.@{state} > .ui.action.input:not([class*="left action"]) > input + .ui.button, .ui.form .field.@{state} > .ui.right.labeled.input:not([class*="corner labeled"]) > input + .ui.label, .ui.action.input.@{state}:not([class*="left action"]) > input + .ui.button, - .ui.right.labeled.input.@{state}:not([class*="corner labeled"]) > input + .ui.label { + .ui.right.labeled.input.@{state}:not([class*="corner labeled"]) > input + .ui.label, + .ui.form .field.@{state} > .ui.action.input:not([class*="left action"]) > textarea + .ui.button, + .ui.form .field.@{state} > .ui.right.labeled.input:not([class*="corner labeled"]) > textarea + .ui.label, + .ui.action.input.@{state}:not([class*="left action"]) > textarea + .ui.button, + .ui.right.labeled.input.@{state}:not([class*="corner labeled"]) > textarea + .ui.label { border-right: @borderWidth solid @borderColor; } .ui.form .field.@{state} > .ui.right.labeled.input:not([class*="corner labeled"]) > .ui.label:first-child, @@ -553,14 +557,16 @@ } /* Input when ui Left */ - .ui[class*="left action"].input > input { + .ui[class*="left action"].input > input, + .ui[class*="left action"].input > textarea { border-top-left-radius: 0; border-bottom-left-radius: 0; border-left-color: transparent; } /* Input when ui Right */ - .ui.action.input:not([class*="left action"]) > input { + .ui.action.input:not([class*="left action"]) > input, + .ui.action.input:not([class*="left action"]) > textarea { border-top-right-radius: 0; border-bottom-right-radius: 0; border-right-color: transparent; @@ -584,11 +590,13 @@ } /* Input Focus */ - .ui.action.input:not([class*="left action"]) > input:focus { + .ui.action.input:not([class*="left action"]) > input:focus, + .ui.action.input:not([class*="left action"]) > textarea:focus { border-right-color: @focusBorderColor; } - .ui.ui[class*="left action"].input > input:focus { + .ui.ui[class*="left action"].input > input:focus, + .ui.ui[class*="left action"].input > textarea:focus { border-left-color: @focusBorderColor; } } diff --git a/src/definitions/globals/site.js b/src/definitions/globals/site.js index fc84481cc0..a86fbd653b 100644 --- a/src/definitions/globals/site.js +++ b/src/definitions/globals/site.js @@ -292,7 +292,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/globals/site.less b/src/definitions/globals/site.less index 3c6997dd55..25c892f25e 100755 --- a/src/definitions/globals/site.less +++ b/src/definitions/globals/site.less @@ -148,18 +148,21 @@ a:hover { body ::-webkit-scrollbar-thumb:hover { background: @thumbHoverBackground; } - body .ui { - & when (@supportIE) { + & when (@supportIE) { + body .ui { /* IE11 */ scrollbar-face-color: @thumbBackgroundHex; scrollbar-shadow-color: @thumbBackgroundHex; scrollbar-track-color: @trackBackgroundHex; scrollbar-arrow-color: @trackBackgroundHex; } - - /* firefox: first color thumb, second track */ - scrollbar-color: @thumbBackground @trackBackground; - scrollbar-width: thin; + } + @supports (-moz-appearance: none) { + body .ui { + /* firefox: first color thumb, second track */ + scrollbar-color: @thumbBackground @trackBackground; + scrollbar-width: thin; + } } /* Inverted UI */ @@ -175,18 +178,20 @@ a:hover { body .ui.inverted:not(.dimmer)::-webkit-scrollbar-thumb:hover { background: @thumbInvertedHoverBackground; } - - body .ui.inverted:not(.dimmer) { - & when (@supportIE) { + & when (@supportIE) { + body .ui.inverted:not(.dimmer) { /* IE11 */ scrollbar-face-color: @thumbInvertedBackgroundHex; scrollbar-shadow-color: @thumbInvertedBackgroundHex; scrollbar-track-color: @trackInvertedBackgroundHex; scrollbar-arrow-color: @trackInvertedBackgroundHex; } - - /* firefox: first color thumb, second track */ - scrollbar-color: @thumbInvertedBackground @trackInvertedBackground; + } + @supports (-moz-appearance: none) { + body .ui.inverted:not(.dimmer) { + /* firefox: first color thumb, second track */ + scrollbar-color: @thumbInvertedBackground @trackInvertedBackground; + } } } diff --git a/src/definitions/modules/accordion.js b/src/definitions/modules/accordion.js index ce61a62270..2cc1186562 100644 --- a/src/definitions/modules/accordion.js +++ b/src/definitions/modules/accordion.js @@ -438,7 +438,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/modules/calendar.js b/src/definitions/modules/calendar.js index 6a2c849f04..3c3c25a207 100644 --- a/src/definitions/modules/calendar.js +++ b/src/definitions/modules/calendar.js @@ -1479,7 +1479,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/modules/checkbox.js b/src/definitions/modules/checkbox.js index 4162a58cb1..05d48197e1 100644 --- a/src/definitions/modules/checkbox.js +++ b/src/definitions/modules/checkbox.js @@ -210,7 +210,7 @@ ; var - r = module.get.radios(), + r = module.get.radios().not(selector.disabled), rIndex = r.index($module), rLen = r.length, checkIndex = false @@ -228,7 +228,10 @@ return false; } - if (settings.beforeChecked.apply($(r[checkIndex]).children(selector.input)[0]) === false) { + var nextOption = $(r[checkIndex]), + nextInput = nextOption.children(selector.input), + disallowOption = nextOption.hasClass(className.readOnly) || nextInput.prop('readonly'); + if (disallowOption || settings.beforeChecked.apply(nextInput[0]) === false) { module.verbose('Next option should not allow check, cancelling key navigation'); return false; @@ -725,7 +728,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var @@ -873,6 +878,7 @@ selector: { checkbox: '.ui.checkbox', + disabled: '.disabled, :has(input[disabled])', label: 'label', input: 'input[type="checkbox"], input[type="radio"]', link: 'a[href]', diff --git a/src/definitions/modules/dimmer.js b/src/definitions/modules/dimmer.js index a350cf75fa..451f3d67ee 100755 --- a/src/definitions/modules/dimmer.js +++ b/src/definitions/modules/dimmer.js @@ -528,7 +528,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/modules/dimmer.less b/src/definitions/modules/dimmer.less index ebf39d595c..3b7488cb2c 100755 --- a/src/definitions/modules/dimmer.less +++ b/src/definitions/modules/dimmer.less @@ -74,17 +74,20 @@ .ui.dimmer:not(.inverted)::-webkit-scrollbar-thumb:hover { background: @thumbInvertedHoverBackground; } - .ui.dimmer:not(.inverted) { - & when (@supportIE) { + & when (@supportIE) { + .ui.dimmer:not(.inverted) { /* IE11 */ scrollbar-face-color: @thumbInvertedBackgroundHex; scrollbar-shadow-color: @thumbInvertedBackgroundHex; scrollbar-track-color: @trackInvertedBackgroundHex; scrollbar-arrow-color: @trackInvertedBackgroundHex; } - - /* firefox: first color thumb, second track */ - scrollbar-color: @thumbInvertedBackground @trackInvertedBackground; + } + @supports (-moz-appearance: none) { + .ui.dimmer:not(.inverted) { + /* firefox: first color thumb, second track */ + scrollbar-color: @thumbInvertedBackground @trackInvertedBackground; + } } } diff --git a/src/definitions/modules/dropdown.js b/src/definitions/modules/dropdown.js index 67554ee120..f50daf2f90 100644 --- a/src/definitions/modules/dropdown.js +++ b/src/definitions/modules/dropdown.js @@ -793,7 +793,7 @@ } if (module.is.multiple()) { $.each(preSelected, function (index, value) { - $item.filter('[data-value="' + value + '"]') + $item.filter('[data-' + metadata.value + '="' + value + '"]') .addClass(className.filtered) ; }); @@ -890,11 +890,13 @@ ? query : module.get.query() ), - results = null, - escapedTerm = module.escape.string(searchTerm), - regExpFlags = (settings.ignoreSearchCase ? 'i' : '') + 'gm', + results = null, + escapedTerm = module.escape.string(searchTerm), + regExpIgnore = settings.ignoreSearchCase ? 'i' : '', + regExpFlags = regExpIgnore + 'gm', beginsWithRegExp = new RegExp('^' + escapedTerm, regExpFlags) ; + module.remove.filteredItem(); // avoid loop if we're matching nothing if (module.has.query()) { results = []; @@ -938,12 +940,34 @@ ; } module.debug('Showing only matched items', searchTerm); - module.remove.filteredItem(); if (results) { $item .not(results) .addClass(className.filtered) ; + if (settings.highlightMatches && (settings.match === 'both' || settings.match === 'text')) { + var querySplit = query.split(''), + diacriticReg = settings.ignoreDiacritics ? '[\u0300-\u036F]?' : '', + htmlReg = '(?![^<]*>)', + markedRegExp = new RegExp(htmlReg + '(' + querySplit.join(diacriticReg + ')(.*?)' + htmlReg + '(') + diacriticReg + ')', regExpIgnore), + markedReplacer = function () { + var args = [].slice.call(arguments, 1, querySplit.length * 2).map(function (x, i) { + return i & 1 ? x : '' + x + ''; // eslint-disable-line no-bitwise + }); + + return args.join(''); + } + ; + $.each(results, function (index, result) { + var $result = $(result), + markedHTML = module.get.choiceText($result, true) + ; + if (settings.ignoreDiacritics) { + markedHTML = markedHTML.normalize('NFD'); + } + $result.html(markedHTML.replace(markedRegExp, markedReplacer)); + }); + } } if (!module.has.query()) { @@ -979,8 +1003,10 @@ termLength = term.length, queryLength = query.length ; - query = settings.ignoreSearchCase ? query.toLowerCase() : query; - term = settings.ignoreSearchCase ? term.toLowerCase() : term; + if (settings.ignoreSearchCase) { + query = query.toLowerCase(); + term = term.toLowerCase(); + } if (queryLength > termLength) { return false; } @@ -1187,7 +1213,7 @@ if (!itemActivated && !pageLostFocus) { if (settings.forceSelection) { module.forceSelection(); - } else if (!settings.allowAdditions) { + } else if (!settings.allowAdditions && !settings.keepSearchTerm && !module.has.menuSearch()) { module.remove.searchTerm(); } module.hide(); @@ -1236,7 +1262,9 @@ module.set.filtered(); } clearTimeout(module.timer); - module.timer = setTimeout(function () { module.search(); }, settings.delay.search); + module.timer = setTimeout(function () { + module.search(); + }, settings.delay.search); }, label: { click: function (event) { @@ -1413,7 +1441,9 @@ module.remove.userAddition(); } if (!settings.keepSearchTerm) { - module.remove.filteredItem(); + if (module.is.multiple()) { + module.remove.filteredItem(); + } module.remove.searchTerm(); } if (!module.is.visible() && $target.length > 0) { @@ -2587,7 +2617,7 @@ } else { $combo.text(text); } - } else if (settings.action === 'activate') { + } else if (settings.action === 'activate' || isFunction(settings.action)) { if (text !== module.get.placeholderText() || isNotPlaceholder) { $text.removeClass(className.placeholder); } @@ -2647,7 +2677,7 @@ module.set.scrollPosition($nextValue); $selectedItem.removeClass(className.selected); $nextValue.addClass(className.selected); - if (settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) { + if (settings.selectOnKeydown && module.is.single() && (!$nextItem || !$nextItem.hasClass(className.actionable))) { module.set.selectedItem($nextValue); } } @@ -2768,19 +2798,27 @@ $selectedItem = settings.allowAdditions ? $selectedItem || module.get.itemWithAdditions(value) : $selectedItem || module.get.item(value); - if (!$selectedItem) { + if (!$selectedItem && value !== undefined) { return false; } - module.debug('Setting selected menu item to', $selectedItem); - if (module.is.multiple() && !keepSearchTerm) { - module.remove.searchWidth(); - } - if (module.is.single()) { + if (isMultiple) { + if (!keepSearchTerm) { + module.remove.searchWidth(); + } + if (settings.useLabels) { + module.remove.selectedItem(); + if (value === undefined) { + module.remove.labels($module.find(selector.label), true); + } + } + } else { module.remove.activeItem(); module.remove.selectedItem(); - } else if (settings.useLabels) { - module.remove.selectedItem(); } + if (!$selectedItem) { + return false; + } + module.debug('Setting selected menu item to', $selectedItem); // select each item $selectedItem .each(function () { @@ -2806,8 +2844,8 @@ module.save.remoteData(selectedText, selectedValue); } if (settings.useLabels) { - module.add.value(selectedValue, selectedText, $selected, preventChangeTrigger); module.add.label(selectedValue, selectedText, shouldAnimate); + module.add.value(selectedValue, selectedText, $selected, preventChangeTrigger); module.set.activeItem($selected); module.filterActive(); module.select.nextAvailable($selectedItem); @@ -3080,6 +3118,12 @@ $item.removeClass(className.active); }, filteredItem: function () { + if (settings.highlightMatches) { + $.each($item, function (index, item) { + var $markItem = $(item); + $markItem.html($markItem.html().replace(/<\/?mark>/g, '')); + }); + } if (settings.useLabels && module.has.maxSelections()) { return; } @@ -3424,7 +3468,12 @@ return $selectedMenu.hasClass(className.leftward); }, clearable: function () { - return $module.hasClass(className.clearable) || settings.clearable; + var hasClearableClass = $module.hasClass(className.clearable); + if (!hasClearableClass && settings.clearable) { + $module.addClass(className.clearable); + } + + return hasClearableClass || settings.clearable; }, disabled: function () { return $module.hasClass(className.disabled); @@ -3747,12 +3796,16 @@ show: function () { module.verbose('Delaying show event to ensure user intent'); clearTimeout(module.timer); - module.timer = setTimeout(function () { module.show(); }, settings.delay.show); + module.timer = setTimeout(function () { + module.show(); + }, settings.delay.show); }, hide: function () { module.verbose('Delaying hide event to ensure user intent'); clearTimeout(module.timer); - module.timer = setTimeout(function () { module.hide(); }, settings.delay.hide); + module.timer = setTimeout(function () { + module.hide(); + }, settings.delay.hide); }, }, @@ -3785,6 +3838,7 @@ return text.replace(regExp.escape, '\\$&'); }, htmlEntities: function (string, forceAmpersand) { + forceAmpersand = typeof forceAmpersand === 'number' ? false : forceAmpersand; var badChars = /["'<>`]/g, shouldEscape = /["&'<>`]/, @@ -3801,8 +3855,7 @@ ; if (shouldEscape.test(string)) { string = string.replace(forceAmpersand ? /&/g : /&(?![\d#a-z]{1,12};)/gi, '&'); - - return string.replace(badChars, escapedChar); + string = string.replace(badChars, escapedChar); } return string; @@ -3878,7 +3931,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var @@ -4005,6 +4060,7 @@ match: 'both', // what to match against with search selection (both, text, or label) fullTextSearch: 'exact', // search anywhere in value (set to 'exact' to require exact matches) + highlightMatches: false, // Whether search result should highlight matching strings ignoreDiacritics: false, // match results also if they contain diacritics of the same base character (for example searching for "a" will also match "á" or "â" or "à", etc...) hideDividers: false, // Whether to hide any divider elements (specified in selector.divider) that are sibling to any items when searched (set to true will hide all dividers, set to 'empty' will hide them when they are not followed by a visible item) @@ -4120,9 +4176,11 @@ descriptionVertical: 'descriptionVertical', // whether description should be vertical value: 'value', // actual dropdown value text: 'text', // displayed text when selected + data: 'data', // custom data attributes type: 'type', // type of dropdown element image: 'image', // optional image path imageClass: 'imageClass', // optional individual class for image + alt: 'alt', // optional alt text for image icon: 'icon', // optional icon name iconClass: 'iconClass', // optional individual class for icon (for example to use flag instead) class: 'class', // optional individual class for item/header @@ -4229,8 +4287,7 @@ ; if (shouldEscape.test(string)) { string = string.replace(/&(?![\d#a-z]{1,12};)/gi, '&'); - - return string.replace(badChars, escapedChar); + string = string.replace(badChars, escapedChar); } return string; @@ -4265,9 +4322,21 @@ $.each(values, function (index, option) { var itemType = option[fields.type] || 'item', - isMenu = itemType.indexOf('menu') !== -1 + isMenu = itemType.indexOf('menu') !== -1, + maybeData = '', + dataObject = option[fields.data] ; - + if (dataObject) { + var dataKey, + dataKeyEscaped + ; + for (dataKey in dataObject) { + dataKeyEscaped = String(dataKey).replace(/\W/g, ''); + if (Object.prototype.hasOwnProperty.call(dataObject, dataKey) && ['text', 'value'].indexOf(dataKeyEscaped.toLowerCase()) === -1) { + maybeData += ' data-' + dataKeyEscaped + '="' + deQuote(String(dataObject[dataKey])) + '"'; + } + } + } if (itemType === 'item' || isMenu) { var maybeText = option[fields.text] @@ -4284,12 +4353,12 @@ : '', hasDescription = escape(option[fields.description] || '', preserveHTML) !== '' ; - html += '
'; + html += '
'; if (isMenu) { html += ''; } if (option[fields.image]) { - html += ''; + html += '' + deQuote(option[fields.alt]) : '') + ''; } if (option[fields.icon]) { html += ''; diff --git a/src/definitions/modules/dropdown.less b/src/definitions/modules/dropdown.less index 2912de588d..37169e54b4 100755 --- a/src/definitions/modules/dropdown.less +++ b/src/definitions/modules/dropdown.less @@ -811,14 +811,14 @@ select.ui.dropdown { } } - .ui.clearable.dropdown .text, - .ui.clearable.dropdown a:last-of-type { + .ui.clearable.dropdown .text:not(.default), + .ui.clearable.dropdown:not(.search) > .ui.label:last-of-type { margin-right: @clearableTextMargin; } .ui.dropdown select.noselection ~ .remove.icon, .ui.dropdown input[value=""] ~ .remove.icon, - .ui.dropdown input:not([value]) ~ .remove.icon, + .ui.dropdown input:not([value]):not(.search) ~ .remove.icon, .ui.dropdown.loading > .remove.icon { display: none; } @@ -1853,13 +1853,20 @@ select.ui.dropdown { & when not (@variationDropdownSizes = false) { each(@variationDropdownSizes, { @s: @@value; - .ui.@{value}.dropdown, - .ui.@{value}.dropdown .menu > .item { + .ui.ui.@{value}.dropdown, + .ui.ui.@{value}.dropdown .menu > .item { font-size: @s; } }); } +& when (@variationDropdownHighlightMatches) { + .ui.dropdown .menu > .item mark { + background: @highlightMatchesBackground; + color: @highlightMatchesColor; + } +} + & when (@variationDropdownInverted) { /* -------------- Inverted @@ -2035,18 +2042,22 @@ select.ui.dropdown { .ui.inverted.dropdown .menu::-webkit-scrollbar-thumb:hover { background: @thumbInvertedHoverBackground; } - .ui.dropdown .inverted.menu, - .ui.inverted.dropdown .menu { - & when (@supportIE) { + & when (@supportIE) { + .ui.dropdown .inverted.menu, + .ui.inverted.dropdown .menu { /* IE11 */ scrollbar-face-color: @thumbInvertedBackgroundHex; scrollbar-shadow-color: @thumbInvertedBackgroundHex; scrollbar-track-color: @trackInvertedBackgroundHex; scrollbar-arrow-color: @trackInvertedBackgroundHex; } - - /* firefox: first color thumb, second track */ - scrollbar-color: @thumbInvertedBackground @trackInvertedBackground; + } + @supports (-moz-appearance: none) { + .ui.dropdown .inverted.menu, + .ui.inverted.dropdown .menu { + /* firefox: first color thumb, second track */ + scrollbar-color: @thumbInvertedBackground @trackInvertedBackground; + } } } & when (@variationDropdownPointing) { diff --git a/src/definitions/modules/embed.js b/src/definitions/modules/embed.js index 18d5438c57..152828140f 100644 --- a/src/definitions/modules/embed.js +++ b/src/definitions/modules/embed.js @@ -119,11 +119,12 @@ createPlaceholder: function (placeholder) { var - icon = module.get.icon() + icon = module.get.icon(), + alt = module.get.alt() ; placeholder = placeholder || module.get.placeholder(); - $module.html(templates.placeholder(placeholder, icon)); - module.debug('Creating placeholder for embed', placeholder, icon); + $module.html(templates.placeholder(placeholder, icon, alt)); + module.debug('Creating placeholder for embed', placeholder, icon, alt); }, createEmbed: function (url) { @@ -203,6 +204,9 @@ placeholder: function () { return settings.placeholder || $module.data(metadata.placeholder); }, + alt: function () { + return settings.alt || $module.data(metadata.alt); + }, icon: function () { return settings.icon || ($module.data(metadata.icon) !== undefined ? $module.data(metadata.icon) @@ -288,6 +292,7 @@ .removeData(metadata.id) .removeData(metadata.icon) .removeData(metadata.placeholder) + .removeData(metadata.alt) .removeData(metadata.source) .removeData(metadata.url) ; @@ -440,7 +445,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var @@ -555,6 +562,8 @@ source: false, url: false, id: false, + placeholder: false, + alt: false, // standard video settings autoplay: 'auto', @@ -577,6 +586,7 @@ id: 'id', icon: 'icon', placeholder: 'placeholder', + alt: 'alt', source: 'source', url: 'url', }, @@ -652,7 +662,7 @@ + ' width="100%" height="100%"' + ' msallowFullScreen allowFullScreen>'; }, - placeholder: function (image, icon) { + placeholder: function (image, icon, alt) { var html = '', deQuote = $.fn.embed.settings.templates.deQuote @@ -661,7 +671,7 @@ html += ''; } if (image) { - html += ''; + html += '' + deQuote(alt) : '') + ''; } return html; diff --git a/src/definitions/modules/flyout.js b/src/definitions/modules/flyout.js index c7214bfda1..61f8a431d3 100644 --- a/src/definitions/modules/flyout.js +++ b/src/definitions/modules/flyout.js @@ -1219,7 +1219,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/modules/modal.js b/src/definitions/modules/modal.js index bc2ae995e3..5061c50754 100755 --- a/src/definitions/modules/modal.js +++ b/src/definitions/modules/modal.js @@ -527,7 +527,9 @@ }, debounce: function (method, delay) { clearTimeout(module.timer); - module.timer = setTimeout(function () { method(); }, delay); + module.timer = setTimeout(function () { + method(); + }, delay); }, keyboard: function (event) { var @@ -1273,7 +1275,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/modules/nag.js b/src/definitions/modules/nag.js index ad77368cf2..7c39daa4c6 100644 --- a/src/definitions/modules/nag.js +++ b/src/definitions/modules/nag.js @@ -88,7 +88,9 @@ } if (settings.displayTime > 0) { - setTimeout(function () { module.hide(); }, settings.displayTime); + setTimeout(function () { + module.hide(); + }, settings.displayTime); } module.show(); }, @@ -144,8 +146,10 @@ module.debug('Dismissing nag', settings.storageMethod, settings.key, settings.value, settings.expires); module.storage.set(settings.key, settings.value); } - event.stopImmediatePropagation(); - event.preventDefault(); + if (event) { + event.stopImmediatePropagation(); + event.preventDefault(); + } }, should: { @@ -377,7 +381,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/modules/popup.js b/src/definitions/modules/popup.js index 38aaac3dc8..11363a175c 100644 --- a/src/definitions/modules/popup.js +++ b/src/definitions/modules/popup.js @@ -194,7 +194,9 @@ ; clearTimeout(module.hideTimer); if (!openedWithTouch || (openedWithTouch && settings.addTouchEvents)) { - module.showTimer = setTimeout(function () { module.show(); }, delay); + module.showTimer = setTimeout(function () { + module.show(); + }, delay); } }, end: function () { @@ -204,7 +206,9 @@ : settings.delay ; clearTimeout(module.showTimer); - module.hideTimer = setTimeout(function () { module.hide(); }, delay); + module.hideTimer = setTimeout(function () { + module.hide(); + }, delay); }, touchstart: function (event) { openedWithTouch = true; @@ -1244,7 +1248,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/modules/progress.js b/src/definitions/modules/progress.js index 7f65b4640b..9f2728ef52 100644 --- a/src/definitions/modules/progress.js +++ b/src/definitions/modules/progress.js @@ -797,7 +797,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/modules/rating.js b/src/definitions/modules/rating.js index ebbb55f8a3..79a954b592 100644 --- a/src/definitions/modules/rating.js +++ b/src/definitions/modules/rating.js @@ -368,7 +368,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/modules/search.js b/src/definitions/modules/search.js index 401f2e1382..309e92bcd7 100644 --- a/src/definitions/modules/search.js +++ b/src/definitions/modules/search.js @@ -135,7 +135,10 @@ // this makes sure $.extend does not add specified search fields to default fields // this is the only setting which should not extend defaults if (parameters && parameters.searchFields !== undefined) { - settings.searchFields = parameters.searchFields; + settings.searchFields = Array.isArray(parameters.searchFields) + ? parameters.searchFields + : [parameters.searchFields] + ; } }, }, @@ -169,7 +172,9 @@ callback = function () { module.cancel.query(); module.remove.focus(); - module.timer = setTimeout(function () { module.hideResults(); }, settings.hideDelay); + module.timer = setTimeout(function () { + module.hideResults(); + }, settings.hideDelay); } ; if (pageLostFocus) { @@ -629,7 +634,7 @@ exactResults = [], fuzzyResults = [], searchExp = searchTerm.replace(regExp.escape, '\\$&'), - matchRegExp = new RegExp(regExp.beginsWith + searchExp, 'i'), + matchRegExp = new RegExp(regExp.beginsWith + searchExp, settings.ignoreSearchCase ? 'i' : ''), // avoid duplicates when pushing results addResult = function (array, result) { @@ -665,13 +670,14 @@ var concatenatedContent = []; $.each(searchFields, function (index, field) { var - fieldExists = (typeof content[field] === 'string') || (typeof content[field] === 'number') + fieldExists = typeof content[field] === 'string' || typeof content[field] === 'number' ; if (fieldExists) { var text; text = typeof content[field] === 'string' ? module.remove.diacritics(content[field]) : content[field].toString(); + text = $('
', { html: text }).text().trim(); if (settings.fullTextSearch === 'all') { concatenatedContent.push(text); if (index < lastSearchFieldIndex) { @@ -702,8 +708,10 @@ }, }, exactSearch: function (query, term) { - query = query.toLowerCase(); - term = term.toLowerCase(); + if (settings.ignoreSearchCase) { + query = query.toLowerCase(); + term = term.toLowerCase(); + } return term.indexOf(query) > -1; }, @@ -730,8 +738,10 @@ if (typeof query !== 'string') { return false; } - query = query.toLowerCase(); - term = term.toLowerCase(); + if (settings.ignoreSearchCase) { + query = query.toLowerCase(); + term = term.toLowerCase(); + } if (queryLength > termLength) { return false; } @@ -1086,6 +1096,39 @@ response[fields.results] = response[fields.results].slice(0, settings.maxResults); } } + if (settings.highlightMatches) { + var results = response[fields.results], + regExpIgnore = settings.ignoreSearchCase ? 'i' : '', + querySplit = module.get.value().split(''), + diacriticReg = settings.ignoreDiacritics ? '[\u0300-\u036F]?' : '', + htmlReg = '(?![^<]*>)', + markedRegExp = new RegExp(htmlReg + '(' + querySplit.join(diacriticReg + ')(.*?)' + htmlReg + '(') + diacriticReg + ')', regExpIgnore), + markedReplacer = function () { + var args = [].slice.call(arguments, 1, querySplit.length * 2).map(function (x, i) { + return i & 1 ? x : '' + x + ''; // eslint-disable-line no-bitwise + }); + + return args.join(''); + } + ; + $.each(results, function (label, content) { + $.each(settings.searchFields, function (index, field) { + var + fieldExists = typeof content[field] === 'string' || typeof content[field] === 'number' + ; + if (fieldExists) { + var markedHTML = typeof content[field] === 'string' + ? content[field] + : content[field].toString(); + if (settings.ignoreDiacritics) { + markedHTML = markedHTML.normalize('NFD'); + } + markedHTML = markedHTML.replace(/<\/?mark>/g, ''); + response[fields.results][label][field] = markedHTML.replace(markedRegExp, markedReplacer); + } + }); + }); + } if (isFunction(template)) { html = template(response, fields, settings.preserveHTML); } else { @@ -1171,7 +1214,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var @@ -1312,9 +1357,15 @@ // search anywhere in value (set to 'exact' to require exact matches fullTextSearch: 'exact', + // Whether search result should highlight matching strings + highlightMatches: false, + // match results also if they contain diacritics of the same base character (for example searching for "a" will also match "á" or "â" or "à", etc...) ignoreDiacritics: false, + // whether to consider case sensitivity on local searching + ignoreSearchCase: true, + // whether to add events to prompt automatically automatic: true, @@ -1393,6 +1444,7 @@ categoryResults: 'results', // array of results (category view) description: 'description', // result description image: 'image', // result image + alt: 'alt', // result alt text for image price: 'price', // result price results: 'results', // array of results (standard) title: 'title', // result title @@ -1432,8 +1484,9 @@ }; if (shouldEscape.test(string)) { string = string.replace(/&(?![\d#a-z]{1,12};)/gi, '&'); - - return string.replace(badChars, escapedChar); + string = string.replace(badChars, escapedChar); + // FUI controlled HTML is still allowed + string = string.replace(/<(\/)*mark>/g, '<$1mark>'); } return string; @@ -1479,7 +1532,7 @@ if (result[fields.image] !== undefined) { html += '' + '
' - + ' ' + + ' ' + result[fields.alt].replace(/' + '
'; } html += '
'; @@ -1532,7 +1585,7 @@ if (result[fields.image] !== undefined) { html += '' + '
' - + ' ' + + ' ' + result[fields.alt].replace(/' + '
'; } html += '
'; diff --git a/src/definitions/modules/search.less b/src/definitions/modules/search.less index 54cdf5b35e..9d4f675359 100755 --- a/src/definitions/modules/search.less +++ b/src/definitions/modules/search.less @@ -565,8 +565,8 @@ .ui.search { font-size: @relativeMedium; } -& when not (@variationFeedSizes = false) { - each(@variationFeedSizes, { +& when not (@variationSearchSizes = false) { + each(@variationSearchSizes, { @s: @{value}SearchSize; .ui.@{value}.search { font-size: @@s; @@ -574,6 +574,13 @@ }); } +& when (@variationSearchHighlightMatches) { + .ui.search > .results mark { + background: @highlightMatchesBackground; + color: @highlightMatchesColor; + } +} + /* -------------- Mobile --------------- */ diff --git a/src/definitions/modules/shape.js b/src/definitions/modules/shape.js index 8a93d70d38..0bca06cc82 100644 --- a/src/definitions/modules/shape.js +++ b/src/definitions/modules/shape.js @@ -623,7 +623,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/modules/sidebar.js b/src/definitions/modules/sidebar.js index dd74a08e93..909b34a3b3 100644 --- a/src/definitions/modules/sidebar.js +++ b/src/definitions/modules/sidebar.js @@ -871,7 +871,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/modules/slider.js b/src/definitions/modules/slider.js index 114a83f490..fda915221e 100644 --- a/src/definitions/modules/slider.js +++ b/src/definitions/modules/slider.js @@ -1267,7 +1267,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/modules/sticky.js b/src/definitions/modules/sticky.js index bb2378b037..1318e82b93 100755 --- a/src/definitions/modules/sticky.js +++ b/src/definitions/modules/sticky.js @@ -746,7 +746,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 0); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 0); }, display: function () { var diff --git a/src/definitions/modules/tab.js b/src/definitions/modules/tab.js index 13fe416d6f..b2d14966a3 100644 --- a/src/definitions/modules/tab.js +++ b/src/definitions/modules/tab.js @@ -788,7 +788,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/modules/toast.js b/src/definitions/modules/toast.js index 6577dbdd1e..7dde9bcf6f 100644 --- a/src/definitions/modules/toast.js +++ b/src/definitions/modules/toast.js @@ -183,6 +183,7 @@ $toast.append($('', { class: className.image + ' ' + settings.classImage, src: settings.showImage, + alt: settings.alt || '', })); } if (settings.title !== '') { @@ -228,7 +229,7 @@ $toast.find(selector.icon).attr('class', iconClass + ' ' + className.icon); } if (settings.showImage) { - $toast.find(selector.image).attr('src', settings.showImage); + $toast.find(selector.image).attr('src', settings.showImage).attr('alt', settings.alt || ''); } if (settings.title !== '') { $toast.find(selector.title).html(module.helpers.escape(settings.title, settings.preserveHTML)); @@ -702,7 +703,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var @@ -839,6 +842,7 @@ actions: false, preserveHTML: true, showImage: false, + alt: false, // transition settings transition: { diff --git a/src/definitions/modules/transition.js b/src/definitions/modules/transition.js index 50e9b4cacd..0554e2319a 100644 --- a/src/definitions/modules/transition.js +++ b/src/definitions/modules/transition.js @@ -142,7 +142,9 @@ ? ($allModules.length - index) * interval : index * interval; module.debug('Delaying animation by', delay); - setTimeout(function () { module.animate(); }, delay); + setTimeout(function () { + module.animate(); + }, delay); }, animate: function (overrideSettings) { @@ -849,7 +851,9 @@ }); } clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(function () { module.performance.display(); }, 500); + module.performance.timer = setTimeout(function () { + module.performance.display(); + }, 500); }, display: function () { var diff --git a/src/definitions/views/feed.less b/src/definitions/views/feed.less index 17f7e4cb6a..38e042b265 100755 --- a/src/definitions/views/feed.less +++ b/src/definitions/views/feed.less @@ -459,6 +459,17 @@ color: @invertedLikeActiveColor; } } + + /* Action */ + .ui.inverted.feed > .event > .content .meta a, + .ui.inverted.feed > .event > .content .meta > i.icon { + color: @invertedMetadataActionColor; + } + .ui.inverted.feed > .event > .content .meta a:hover, + .ui.inverted.feed > .event > .content .meta a:hover i.icon, + .ui.inverted.feed > .event > .content .meta > i.icon:hover { + color: @invertedMetadataActionHoverColor; + } } /* -------------- diff --git a/src/themes/basic/assets/fonts/LICENSE.txt b/src/themes/basic/assets/fonts/LICENSE.txt new file mode 100644 index 0000000000..de3c0b85b4 --- /dev/null +++ b/src/themes/basic/assets/fonts/LICENSE.txt @@ -0,0 +1,91 @@ +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/src/themes/default/assets/fonts/LICENSE_Lato.txt b/src/themes/default/assets/fonts/LICENSE_Lato.txt new file mode 100644 index 0000000000..8a7280ecca --- /dev/null +++ b/src/themes/default/assets/fonts/LICENSE_Lato.txt @@ -0,0 +1,94 @@ +Copyright (c) 2010-2015, Łukasz Dziedzic (dziedzic@typoland.com), +with Reserved Font Name Lato. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/src/themes/default/assets/fonts/LICENSE_icons.txt b/src/themes/default/assets/fonts/LICENSE_icons.txt new file mode 100644 index 0000000000..39e18e3d30 --- /dev/null +++ b/src/themes/default/assets/fonts/LICENSE_icons.txt @@ -0,0 +1,165 @@ +Fonticons, Inc. (https://fontawesome.com) + +-------------------------------------------------------------------------------- + +Font Awesome Free License + +Font Awesome Free is free, open source, and GPL friendly. You can use it for +commercial projects, open source projects, or really almost whatever you want. +Full Font Awesome Free license: https://fontawesome.com/license/free. + +-------------------------------------------------------------------------------- + +# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/) + +The Font Awesome Free download is licensed under a Creative Commons +Attribution 4.0 International License and applies to all icons packaged +as SVG and JS file types. + +-------------------------------------------------------------------------------- + +# Fonts: SIL OFL 1.1 License + +In the Font Awesome Free download, the SIL OFL license applies to all icons +packaged as web and desktop font files. + +Copyright (c) 2023 Fonticons, Inc. (https://fontawesome.com) +with Reserved Font Name: "Font Awesome". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +SIL OPEN FONT LICENSE +Version 1.1 - 26 February 2007 + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting — in part or in whole — any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +-------------------------------------------------------------------------------- + +# Code: MIT License (https://opensource.org/licenses/MIT) + +In the Font Awesome Free download, the MIT license applies to all non-font and +non-icon files. + +Copyright 2023 Fonticons, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in the +Software without restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-------------------------------------------------------------------------------- + +# Attribution + +Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font +Awesome Free files already contain embedded comments with sufficient +attribution, so you shouldn't need to do anything additional when using these +files normally. + +We've kept attribution comments terse, so we ask that you do not actively work +to remove them from files, especially code. They're a great way for folks to +learn about Font Awesome. + +-------------------------------------------------------------------------------- + +# Brand Icons + +All brand icons are trademarks of their respective owners. The use of these +trademarks does not indicate endorsement of the trademark holder by Font +Awesome, nor vice versa. **Please do not use brand logos for any purpose except +to represent the company, product, or service to which they refer.** diff --git a/src/themes/default/collections/form.variables b/src/themes/default/collections/form.variables index 70907c8765..2de6db7d99 100644 --- a/src/themes/default/collections/form.variables +++ b/src/themes/default/collections/form.variables @@ -60,6 +60,7 @@ @textAreaBorder: @inputBorder; @textAreaFontSize: @inputFontSize; @textAreaTransition: @inputTransition; +@actionTextareaMinHeight: (@inputVerticalPadding * 2) + @lineHeight; /* Checkbox */ @checkboxVerticalAlign: top; diff --git a/src/themes/default/elements/button.variables b/src/themes/default/elements/button.variables index 6b6377d376..a9a4414abd 100644 --- a/src/themes/default/elements/button.variables +++ b/src/themes/default/elements/button.variables @@ -394,6 +394,8 @@ /* Circular */ @circularBorderRadius: 10em; @circularIconWidth: 1em; +@circularGroupMargin: 0.25em; +@circularVerticalGroupMargin: @circularGroupMargin; /* Spaced */ @spacedMargin: 1em; diff --git a/src/themes/default/globals/site.variables b/src/themes/default/globals/site.variables index e017be88fd..c6f4bef107 100755 --- a/src/themes/default/globals/site.variables +++ b/src/themes/default/globals/site.variables @@ -1538,3 +1538,6 @@ @inputWarningPlaceholderColor: if(iscolor(@formWarningColor), lighten(@formWarningColor, 40), @formWarningColor); @inputWarningPlaceholderFocusColor: if(iscolor(@formWarningColor), lighten(@formWarningColor, 30), @formWarningColor); + +@defaultHighlightMatchesBackground: revert; +@defaultHighlightMatchesColor: revert; diff --git a/src/themes/default/globals/variation.variables b/src/themes/default/globals/variation.variables index fbc0abe375..6c2da02ddb 100644 --- a/src/themes/default/globals/variation.variables +++ b/src/themes/default/globals/variation.variables @@ -82,6 +82,7 @@ @variationHeaderDividing: true; @variationHeaderBlock: true; @variationHeaderAttached: true; +@variationHeaderSeamless: true; @variationHeaderTags: h1, h2, h3, h4, h5, h6; @variationHeaderSizes: @variationAllSizes; @variationHeaderColors: @variationAllColors; @@ -572,6 +573,7 @@ @variationDropdownPointing: true; @variationDropdownColumnar: true; @variationDropdownScrollhint: true; +@variationDropdownHighlightMatches: false; @variationDropdownSizes: @variationAllSizes; /* Embed */ @@ -678,6 +680,7 @@ @variationSearchVeryLong: true; @variationSearchResizable: true; @variationSearchScrolling: true; +@variationSearchHighlightMatches: false; @variationSearchSizes: @variationAllSizes; /* Shape */ diff --git a/src/themes/default/modules/dropdown.variables b/src/themes/default/modules/dropdown.variables index 139d6d645a..c48e12f4df 100755 --- a/src/themes/default/modules/dropdown.variables +++ b/src/themes/default/modules/dropdown.variables @@ -480,3 +480,6 @@ /* Resizable */ @resizableDirection: vertical; + +@highlightMatchesBackground: @defaultHighlightMatchesBackground; +@highlightMatchesColor: @defaultHighlightMatchesColor; diff --git a/src/themes/default/modules/search.variables b/src/themes/default/modules/search.variables index 7e35550134..f471d659c5 100644 --- a/src/themes/default/modules/search.variables +++ b/src/themes/default/modules/search.variables @@ -177,3 +177,6 @@ /* Resizable */ @resizableDirection: vertical; + +@highlightMatchesBackground: @defaultHighlightMatchesBackground; +@highlightMatchesColor: @defaultHighlightMatchesColor; diff --git a/src/themes/default/views/feed.variables b/src/themes/default/views/feed.variables index c316a5ec46..bb3613061d 100644 --- a/src/themes/default/views/feed.variables +++ b/src/themes/default/views/feed.variables @@ -190,6 +190,9 @@ @invertedLikeHoverColor: @invertedSelectedTextColor; @invertedLikeActiveColor: @invertedLikeColor; +@invertedMetadataActionColor: @invertedLightTextColor; +@invertedMetadataActionHoverColor: @invertedSelectedTextColor; + @invertedConnectedBorderColor: @whiteBorderColor; @invertedDividedBorderColor: @whiteBorderColor; @invertedTextLabelColor: @white; diff --git a/src/themes/github/assets/fonts/LICENSE.txt b/src/themes/github/assets/fonts/LICENSE.txt new file mode 100644 index 0000000000..79350f0e46 --- /dev/null +++ b/src/themes/github/assets/fonts/LICENSE.txt @@ -0,0 +1,94 @@ +(c) 2012-2015 GitHub +with Reserved Font Name Opticons. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/src/themes/material/assets/fonts/LICENSE.txt b/src/themes/material/assets/fonts/LICENSE.txt new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/src/themes/material/assets/fonts/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/types/fomantic-ui-accordion.d.ts b/types/fomantic-ui-accordion.d.ts index 5db11c9a62..939e32298a 100644 --- a/types/fomantic-ui-accordion.d.ts +++ b/types/fomantic-ui-accordion.d.ts @@ -28,7 +28,7 @@ declare namespace FomanticUI { (behavior: 'toggle', index: number): JQuery; (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: AccordionSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; diff --git a/types/fomantic-ui-api.d.ts b/types/fomantic-ui-api.d.ts index 0e223f7832..1a8ee6de73 100644 --- a/types/fomantic-ui-api.d.ts +++ b/types/fomantic-ui-api.d.ts @@ -107,7 +107,7 @@ declare namespace FomanticUI { */ (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial> | Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial> | Partial>; (behavior: 'setting', name: K, value: APISettings[K]): JQuery; (behavior: 'setting', value: Partial> | Partial>): JQuery; (settings?: Partial> | Partial>): JQuery; @@ -125,6 +125,12 @@ declare namespace FomanticUI { */ on: string; + /** + * Object containing all templates endpoints + * @default {} + */ + api: {[key: string]: string}; + /** * Can be set to 'local' to cache successful returned AJAX responses when using a JSON API. * This helps avoid server roundtrips when API endpoints will return the same results when accessed repeatedly. @@ -137,7 +143,7 @@ declare namespace FomanticUI { * UI state will be applied to this element, defaults to triggering element. * @default false */ - stateContext: false | JQuery; + stateContext: false | string | JQuery; /** * Whether to encode parameters with 'encodeURIComponent' before adding into url string. @@ -259,7 +265,7 @@ declare namespace FomanticUI { * Method for transmitting request to server. * @default 'get' */ - method: 'get' | 'post' | 'put' | 'delete' | 'head' | 'options' | 'patch'; + method: Uppercase<'get' | 'post' | 'put' | 'delete' | 'head' | 'options' | 'patch'> | Lowercase<'get' | 'post' | 'put' | 'delete' | 'head' | 'options' | 'patch'>; /** * Expected data type of response. diff --git a/types/fomantic-ui-calendar.d.ts b/types/fomantic-ui-calendar.d.ts index 3f7ff1ae39..e486026c36 100644 --- a/types/fomantic-ui-calendar.d.ts +++ b/types/fomantic-ui-calendar.d.ts @@ -37,7 +37,7 @@ declare namespace FomanticUI { * Pass false to updateInput to disable updating the input. * Pass false to fireChange to disable the onBeforeChange and onChange callbacks for this change */ - (behavior: 'set date', date: string, updateInput: boolean, fireChange: boolean): JQuery; + (behavior: 'set date', date: Date | string | null, updateInput?: boolean, fireChange?: boolean): JQuery; /** * Get the current selection mode (year, month, day, hour, minute) @@ -82,12 +82,12 @@ declare namespace FomanticUI { /** * Set the minimal selectable date */ - (behavior: 'set minDate', date: Date | string): JQuery; + (behavior: 'set minDate', date: Date | string | null): JQuery; /** * Set the maximal selectable date */ - (behavior: 'set maxDate', date: Date | string): JQuery; + (behavior: 'set maxDate', date: Date | string | null): JQuery; (behavior: 'destroy'): JQuery; @@ -214,7 +214,7 @@ declare namespace FomanticUI { * * @default null */ - initialDate: null | Date; + initialDate: Date | string | null; /** * Display mode to start in, can be 'year', 'month', 'day', 'hour', 'minute' (false = 'day'). @@ -319,12 +319,14 @@ declare namespace FomanticUI { * * @default false */ - selectAdjacentDays: 5 | 10 | 15 | 20 | 30; + selectAdjacentDays: boolean; popupOptions: Calendar.PopupSettings; text: Calendar.TextSettings; + formatter: Calendar.FormatterSettings; + // endregion // region Callbacks @@ -333,12 +335,12 @@ declare namespace FomanticUI { * Is called before a calendar date changes. 'return false;' will cancel the change. * @since 2.8.0 */ - onBeforeChange(this: JQuery): void; + onBeforeChange(this: JQuery, date?: Date, text?: string, mode?: string): void; /** * Is called after a calendar date has changed. */ - onChange(this: JQuery): void; + onChange(this: JQuery, date?: Date): void; /** * Is called before a calendar is shown. 'return false;' will prevent the calendar to be shown. @@ -364,7 +366,7 @@ declare namespace FomanticUI { * Is called when a cell of the calendar is selected providing its value and current mode. * 'return false;' will prevent the selection. */ - onSelect(this: JQuery, date: Date, mode: string): void; + onSelect(this: JQuery, date?: Date, mode?: string): void; // endregion @@ -436,6 +438,7 @@ declare namespace FomanticUI { namespace Calendar { type PopupSettings = Partial>; type TextSettings = Partial>; + type FormatterSettings = Partial>; type SelectorSettings = Partial>; type ClassNameSettings = Partial>; type RegExpSettings = Partial>; @@ -471,6 +474,16 @@ declare namespace FomanticUI { */ days: string[]; + /** + * @default ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] + */ + dayNamesShort: string[]; + + /** + * @default ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] + */ + dayNames: string[]; + /** * @default ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] */ @@ -507,6 +520,78 @@ declare namespace FomanticUI { weekNo: string; } + interface Formatters { + /** + * + */ + yearHeader(date: Date, settings?: CalendarSettings): string; + + /** + * @default 'YYYY' + */ + monthHeader: string; + + /** + * @default 'MMMM YYYY' + */ + dayHeader: string; + + /** + * @default 'MMMM D, YYYY' + */ + hourHeader: string; + + /** + * @default 'MMMM D, YYYY' + */ + minuteHeader: string; + + /** + * @default 'MMMM D, YYYY' + */ + dayColumnHeader(day: number, settings: CalendarSettings): string; + + /** + * @default 'MMMM D, YYYY h:mm A' + */ + datetime: string; + + /** + * @default 'MMMM D, YYYY' + */ + date: string; + + /** + * @default 'h:mm A' + */ + time: string; + + /** + * @default 'h:mm A' + */ + cellTime: string; + + /** + * @default 'MMMM YYYY' + */ + month: string; + + /** + * @default 'YYYY' + */ + year: string; + + /** + * + */ + today(settings: CalendarSettings): string; + + /** + * + */ + cell(cell: string, date: Date, cellOptions: any): any + } + interface Selectors { /** * @default '.ui.popup' diff --git a/types/fomantic-ui-checkbox.d.ts b/types/fomantic-ui-checkbox.d.ts index 2bd2f7665e..6eac6a3618 100644 --- a/types/fomantic-ui-checkbox.d.ts +++ b/types/fomantic-ui-checkbox.d.ts @@ -32,6 +32,11 @@ declare namespace FomanticUI { */ (behavior: 'enable'): JQuery; + /** + * Disable interaction with a checkbox. + */ + (behavior: 'disable'): JQuery; + /** * Set a checkbox state to checked without callbacks. */ @@ -82,6 +87,11 @@ declare namespace FomanticUI { */ (behavior: 'is unchecked'): boolean; + /** + * Returns whether element is not determinate. + */ + (behavior: 'is indeterminate'): boolean; + /** * Returns whether element is able to be changed. */ @@ -175,22 +185,22 @@ declare namespace FomanticUI { /** * Callback before a checkbox is checked. Can cancel change by returning 'false'. */ - beforeChecked(this: JQuery): void | false; + beforeChecked(this: JQuery): void | Promise | boolean; /** * Callback before a checkbox is set to indeterminate. Can cancel change by returning 'false'. */ - beforeIndeterminate(this: JQuery): void | false; + beforeIndeterminate(this: JQuery): void | Promise | false; /** * Callback before a checkbox is set to determinate. Can cancel change by returning 'false'. */ - beforeDeterminate(this: JQuery): void | false; + beforeDeterminate(this: JQuery): void | Promise | false; /** * Callback before a checkbox is unchecked. Can cancel change by returning 'false'. */ - beforeUnchecked(this: JQuery): void | false; + beforeUnchecked(this: JQuery): void | Promise | false; /** * Callback after a checkbox is enabled. diff --git a/types/fomantic-ui-dimmer.d.ts b/types/fomantic-ui-dimmer.d.ts index c42a6a5be2..db4b0cb3eb 100644 --- a/types/fomantic-ui-dimmer.d.ts +++ b/types/fomantic-ui-dimmer.d.ts @@ -113,7 +113,7 @@ declare namespace FomanticUI { (behavior: 'set disabled'): JQuery; (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: DimmerSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; diff --git a/types/fomantic-ui-dropdown.d.ts b/types/fomantic-ui-dropdown.d.ts index 9fad69e068..11826ff5db 100644 --- a/types/fomantic-ui-dropdown.d.ts +++ b/types/fomantic-ui-dropdown.d.ts @@ -6,7 +6,7 @@ declare namespace FomanticUI { * Recreates dropdown menu from passed values. * values should be an object with the following structure: { values: [ {value, text, name} ] }. */ - (behavior: 'setup menu', values: object): void; + (behavior: 'setup menu', values: object): JQuery; /** * Changes dropdown to use new values. @@ -17,7 +17,7 @@ declare namespace FomanticUI { /** * Refreshes all cached selectors and data */ - (behavior: 'refresh'): void; + (behavior: 'refresh'): JQuery; /** * Toggles current visibility of dropdown @@ -29,20 +29,20 @@ declare namespace FomanticUI { * If a function is provided to callback, it's called after the dropdown-menu is shown. * Set preventFocus to true if you don't want the dropdown field to focus after the menu is shown */ - (behavior: 'show', callback: Function, preventFocus: boolean): void; + (behavior: 'show', callback?: Function, preventFocus?: boolean): void; /** * Hides dropdown. * If a function is provided to callback, it's called after the dropdown-menu is hidden. * Set preventBlur to true if you don't want the dropdown field to blur after the menu is hidden */ - (behavior: 'hide', callback:Function, preventBlur: boolean): void; + (behavior: 'hide', callback?: Function, preventBlur?: boolean): void; /** * Clears dropdown of selection. * Set preventChangeTrigger to true to omit the change event (default: false). */ - (behavior: 'clear', preventChangeTrigger: boolean): void; + (behavior: 'clear', preventChangeTrigger?: boolean): JQuery; /** * Hides all other dropdowns that is not current dropdown @@ -53,7 +53,7 @@ declare namespace FomanticUI { * Restores dropdown text and value to its value on page load. * Set preventChangeTrigger to true to omit the change event (default: false). */ - (behavior: 'restore defaults', preventChangeTrigger: boolean): void; + (behavior: 'restore defaults', preventChangeTrigger?: boolean): void; /** * Restores dropdown text to its value on page load @@ -79,33 +79,28 @@ declare namespace FomanticUI { * Sets value as selected. * Set preventChangeTrigger to true to omit the change event (default: false). */ - (behavior: 'set selected', value: string, preventChangeTrigger: boolean): void; + (behavior: 'set selected', value: string | string[], preventChangeTrigger?: boolean, keepSearchTerm?: boolean): JQuery; /** * Remove value from selected */ (behavior: 'remove selected', value: string): void; - /** - * Adds a group of values as selected - */ - (behavior: 'set selected', values: string[]): void; - /** * Sets selected values to exactly specified values, removing current selection */ - (behavior: 'set exactly', values: string[]): void; + (behavior: 'set exactly', values: string[]): JQuery; /** * Sets dropdown text to a value */ - (behavior: 'text', text: string): void; + (behavior: 'set text', text: string): JQuery; /** * Sets dropdown input to value (does not update display state). * Set preventChangeTrigger to true to omit the change event (default: false). */ - (behavior: 'set value', value: string, preventChangeTrigger: boolean): void; + (behavior: 'set value', value: string, preventChangeTrigger?: boolean): JQuery; /** * Returns current dropdown text @@ -215,7 +210,7 @@ declare namespace FomanticUI { (behavior: 'get placeholder text'): string; (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: DropdownSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; @@ -265,7 +260,7 @@ declare namespace FomanticUI { * @see {@link https://fomantic-ui.com/behaviors/api.html#/settings} * @default false */ - apiSettings: false | APISettings | JQueryAjaxSettings; + apiSettings: false | Partial> | Partial>; /** * Whether dropdown should select new option when using keyboard shortcuts. @@ -350,7 +345,7 @@ declare namespace FomanticUI { * * @default 'auto' */ - placeholder: 'auto' | String | false; + placeholder: 'auto' | string | false; /** * Whether HTML included in dropdown values should be preserved. @@ -390,6 +385,12 @@ declare namespace FomanticUI { */ ignoreSearchCase: boolean; + /** + * Whether search result should highlight matching strings + * @default false + */ + highlightMatches: boolean; + /** * If disabled user additions will appear in the dropdown's menu using a specially formatted selection item formatted by 'templates.addition'. * @default true @@ -506,7 +507,7 @@ declare namespace FomanticUI { * Is called after a dropdown value changes. * Receives the name and value of selection and the active menu element. */ - onChange(value: string, text: string, $choice: JQuery): void; + onChange(value?: string, text?: string, $choice?: JQuery): void; /** * Is called after a dropdown selection is added using a multiple select dropdown, only receives the added value. @@ -582,22 +583,22 @@ declare namespace FomanticUI { message: Dropdown.MessageSettings; /** - * + * */ regExp: Dropdown.RegExpSettings; /** - * + * */ metadata: Dropdown.MetadataSettings; /** - * + * */ fields: Dropdown.FieldsSettings; /** - * + * */ keys: Dropdown.KeysSettings; @@ -743,7 +744,7 @@ declare namespace FomanticUI { */ clearIcon: string; } - + interface ClassNames { /** * @default 'active' @@ -920,7 +921,7 @@ declare namespace FomanticUI { */ actionable: string; } - + interface Messages { /** * @default 'Add {term}' @@ -952,9 +953,9 @@ declare namespace FomanticUI { /** * @default '/[-[\]{}()*+?.,\\^$|#\s]/g' */ - escape: string; + escape: string; } - + interface Metadatas { /** * @default 'defaultText' @@ -964,24 +965,24 @@ declare namespace FomanticUI { /** * @default 'defaultValue' */ - defaultValue: string; + defaultValue: string; /** * @default 'placeholderText' */ - placeholderText: string; + placeholderText: string; /** * @default 'text' */ - text: string; + text: string; /** * @default 'value' */ - value: string; + value: string; } - + interface Fields { /** * Grouping for api results @@ -993,13 +994,13 @@ declare namespace FomanticUI { * Grouping for all dropdown values * @default 'values' */ - values: string; + values: string; /** * Whether value should be disabled * @default 'disabled' */ - disabled: string; + disabled: string; /** * Displayed dropdown text @@ -1031,6 +1032,12 @@ declare namespace FomanticUI { */ text: string; + /** + * custom data atttributes + * @default 'data' + */ + data: string; + /** * Type of dropdown element * @default 'type' @@ -1049,6 +1056,12 @@ declare namespace FomanticUI { */ imageClass: string; + /** + * Optional alt text for image + * @default 'alt' + */ + alt: string; + /** * Optional icon name * @default 'icon' @@ -1079,7 +1092,7 @@ declare namespace FomanticUI { */ actionable: string; } - + interface Keys { /** * @default 8 diff --git a/types/fomantic-ui-embed.d.ts b/types/fomantic-ui-embed.d.ts index b45d2da128..642ccae4e5 100644 --- a/types/fomantic-ui-embed.d.ts +++ b/types/fomantic-ui-embed.d.ts @@ -57,7 +57,7 @@ declare namespace FomanticUI { */ (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: EmbedSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; @@ -93,6 +93,18 @@ declare namespace FomanticUI { */ id: false | string; + /** + * Specifies a path for a placeholder image. + * @default false + */ + placeholder: false | string; + + /** + * Specifies an alt text for a given placeholder image. + * @default false + */ + alt: false | string; + /** * Specify an object containing key/value pairs to add to the iframes GET parameters. * @default false @@ -270,6 +282,11 @@ declare namespace FomanticUI { */ placeholder: string; + /** + * @default 'alt' + */ + alt: string; + /** * @default 'source' */ @@ -307,7 +324,7 @@ declare namespace FomanticUI { /** * @default function */ - placeholder(image: string, icon: string): string; + placeholder(image: string, icon: string, alt: string | false | undefined): string; } interface Errors { diff --git a/types/fomantic-ui-flyout.d.ts b/types/fomantic-ui-flyout.d.ts index fae2110b74..30f5ebc568 100644 --- a/types/fomantic-ui-flyout.d.ts +++ b/types/fomantic-ui-flyout.d.ts @@ -48,8 +48,13 @@ declare namespace FomanticUI { */ (behavior: 'get settings'): FlyoutSettings; + /** + * Templates handling + */ + (behavior: keyof Flyout.TemplatesSettings, ...args: any): Partial>; + (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: FlyoutSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; @@ -145,43 +150,43 @@ declare namespace FomanticUI { * Content of the flyout header. * @default '' */ - title: boolean; + title: string; /** * Content of the flyout content. * @default '' */ - content: boolean; + content: string; /** * Can hold a string to be added to the flyout class to control its appearance. * @default '' */ - class: boolean; + class: string; /** * Can hold a string to be added to the title class to control its appearance. * @default '' */ - classTitle: boolean; + classTitle: string; /** * Can hold a string to be added to the content class to control its appearance. * @default '' */ - classContent: boolean; + classContent: string; /** * Can hold a string to be added to the actions class to control its appearance. * @default '' */ - classActions: boolean; + classActions: string; /** * Can hold a string to be added to the actions class to control its appearance. * @default false */ - closeIcon: boolean; + closeIcon: boolean | string; /** * An array of objects. Each object defines an action with properties `text`, `class`, `icon` and `click`. @@ -261,6 +266,8 @@ declare namespace FomanticUI { // region Config Template Settings + templates: Flyout.TemplatesSettings; + // endregion // region Debug Settings @@ -311,6 +318,7 @@ declare namespace FomanticUI { type ClassNameSettings = Partial>; type RegExpSettings = Partial>; type ErrorSettings = Partial>; + type TemplatesSettings = Partial> & {[key: string]: (...args: any) => Partial>}; namespace Settings { interface Selectors { @@ -364,7 +372,7 @@ declare namespace FomanticUI { */ deny: string; } - + interface ClassNames { /** * @default 'ui flyout' @@ -481,7 +489,7 @@ declare namespace FomanticUI { */ prompt: string; } - + interface RegExps { /** * @default /(iPad|iPhone|iPod)/g @@ -520,6 +528,12 @@ declare namespace FomanticUI { */ notFound: string; } + + interface Templates { + alert(): Partial>; + confirm(): Partial>; + prompt(): Partial>; + } } } } diff --git a/types/fomantic-ui-form.d.ts b/types/fomantic-ui-form.d.ts index 6d2048fcca..ffb4425fe0 100644 --- a/types/fomantic-ui-form.d.ts +++ b/types/fomantic-ui-form.d.ts @@ -15,7 +15,12 @@ declare namespace FomanticUI { /** * Adds rule to existing rules for field, also aliased as 'add field'. */ - (behavior: 'add rule', field: string, rules: object[]): void; + (behavior: 'add rule', field: string, rules: string | string[] | FormField[]): void; + + /** + * Adds field object to existing fields. + */ + (behavior: 'add field', name: string, rules: string | string[] | FormRule[]): void; /** * Adds fields object to existing fields. @@ -25,13 +30,18 @@ declare namespace FomanticUI { /** * Removes specific rule from field leaving other rules. */ - (behavior: 'remove rule', field: string, rules: object[]): void; + (behavior: 'remove rule', field: string, rules?: object[]): void; /** * Remove all validation for a field. */ (behavior: 'remove field', field: string): void; + /** + * Remove all validation for an array of fields. + */ + (behavior: 'remove fields', field: string[]): void; + /** * Returns 'true'/'false' whether a field passes its validation rules. * If you add 'true' as the second parameter, any failed rule will update the UI. @@ -41,7 +51,7 @@ declare namespace FomanticUI { /** * Validates form, updates UI, and calls 'onSuccess' or 'onFailure'. */ - (behavior: 'validate form'): void; + (behavior: 'validate form'): boolean; /** * Validates field, updates UI, and calls 'onSuccess' or 'onFailure'. @@ -51,7 +61,7 @@ declare namespace FomanticUI { /** * Returns element with matching name, id, or data-validate metadata to identifier. */ - (behavior: 'get field', identifier: string): string; + (behavior: 'get field', identifier: string, strict?: boolean, ignoreMissing?: boolean): string; /** * Returns value of element with id. @@ -62,7 +72,7 @@ declare namespace FomanticUI { * Returns object of element values that match array of identifiers. * If no IDS are passed will return all fields. */ - (behavior: 'get values', identifiers?: string[]): object; + (behavior: 'get values', identifiers?: string[]): Record; /** * Sets value of element with id. @@ -82,7 +92,7 @@ declare namespace FomanticUI { /** * Returns whether a field exists. */ - (behavior: 'has field', identifier: string): boolean; + (behavior: 'has field', identifier: string, ignoreMissing?: boolean): boolean; /** * Manually add errors to form, given an array errors. @@ -97,23 +107,33 @@ declare namespace FomanticUI { /** * Adds a custom user prompt for a given element with identifier. */ - (behavior: 'add prompt', identifier: string, errors: object[]): void; + (behavior: 'add prompt', identifier: string, errors: string | object[]): void; /** * Empty all fields and remove possible errors. */ - (behavior: 'clear'): void; + (behavior: 'clear'): JQuery; /** * Set all fields to their initial value and remove possible errors. */ - (behavior: 'reset'): void; + (behavior: 'reset'): JQuery; /** * Set fields actual values as default values. */ (behavior: 'set defaults'): void; + /** + * Returns 'true'/'false' whether a form is dirty. + */ + (behavior: 'is dirty'): boolean; + + /** + * Returns 'true'/'false' whether a form is clean. + */ + (behavior: 'is clean'): boolean; + /** * Return elements which have been modified since form state was changed to 'dirty'. */ @@ -122,10 +142,10 @@ declare namespace FomanticUI { /** * Set the state of the form to 'clean' and set new values as default. */ - (behavior: 'set as clean'): void; + (behavior: 'set as clean'): JQuery; /** - * Automatically adds the "empty" rule or automatically checks a checkbox for all fields with classname or attribute 'required'. + * Automatically adds the "notEmpty" rule or automatically checks a checkbox for all fields with classname or attribute 'required'. */ (behavior: 'set auto check'): void; @@ -138,18 +158,39 @@ declare namespace FomanticUI { * Destroys instance and removes all events. */ (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: FormSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; } + type FormFields = Record; + + interface FormRule { + type: string; + prompt?: string | ((value: string) => void); + value?: string | RegExp; + } + + interface FormField { + identifier?: string; + depends?: string; + optional?: boolean; + rules: FormRule[]; + } + /** * @see {@link https://fomantic-ui.com/behaviors/form.html#/settings} */ interface FormSettings { // region Form Settings + /** + * Adds keyboard shortcuts for enter and escape keys to submit form and blur fields respectively. + * @default false + */ + fields: false | FormFields; + /** * Adds keyboard shortcuts for enter and escape keys to submit form and blur fields respectively. * @default true @@ -215,7 +256,7 @@ declare namespace FomanticUI { preventLeaving: boolean; /** - * Whether fields with classname or attribute 'required' should automatically add the "empty" rule or automatically checks checkbox fields. + * Whether fields with classname or attribute 'required' should automatically add the "notEmpty" rule or automatically checks checkbox fields. * @default false */ autoCheckRequired: boolean; @@ -227,11 +268,17 @@ declare namespace FomanticUI { errorFocus: boolean | string; /** - * + * * @default 0 */ errorLimit: number; + /** + * + * @default false + */ + noNativeValidation: boolean; + // endregion // region Form Prompts @@ -248,6 +295,12 @@ declare namespace FomanticUI { // endregion + // region Formatters + + rules: Form.RulesSettings; + + // endregion + // region Callbacks /** @@ -258,17 +311,17 @@ declare namespace FomanticUI { /** * Callback on each invalid field. */ - onInvalid(this: JQuery): void; + onInvalid(this: JQuery, fieldErrors: string | string[]): void; /** * Callback if a form is all valid. */ - onSuccess(this: JQuery, event: Event, fields: object[]): void; + onSuccess(this: JQuery, event: Event, fields: {[key: string]: any}): void; /** * Callback if any form field is invalid. */ - onFailure(this: JQuery, formErrors: object[], fields: object[]): void; + onFailure(this: JQuery, formErrors: {[key: string]: any}, fields: {[key: string]: any}): void; /** * Callback if form state is modified to 'dirty'. @@ -349,8 +402,9 @@ declare namespace FomanticUI { namespace Form { type TextSettings = Partial>; - type PromptSettings = Partial>; + type PromptSettings = Partial> & {[key: string]: string | undefined}; type FormatterSettings = Partial>; + type RulesSettings = Partial> & {[key: string]: (value?: any, identifier?: string, module?: any) => boolean}; type SelectorSettings = Partial>; type MetadataSettings = Partial>; type ClassNameSettings = Partial>; @@ -373,13 +427,34 @@ declare namespace FomanticUI { */ leavingMessage: string; } - + interface Prompts { + /** + * @default '{name} must be in a range from {min} to {max}' + */ + range: string; + + /** + * @default '{name} must have a maximum value of {ruleValue}' + */ + maxValue: string; + + /** + * @default '{name} must have a minimum value of {ruleValue}' + */ + minValue: string; + /** * @default '{name} must have a value' + * @deprecated Use notEmpty instead */ empty: string; + /** + * @default '{name} must have a value' + */ + notEmpty: string; + /** * @default '{name} must be checked' */ @@ -500,7 +575,7 @@ declare namespace FomanticUI { */ maxCount: string; } - + interface Formatters { date(date: string): string; datetime(date: string): string; @@ -509,6 +584,39 @@ declare namespace FomanticUI { year(date: string): string; } + interface Rules { + empty(value: unknown): boolean; + notEmpty(value: unknown): boolean; + checked(): boolean; + email(value: unknown): boolean; + url(value: unknown): boolean; + regExp(value: unknown, regExp: RegExp): boolean; + minValue(value: unknown, range: string): boolean; + maxValue(value: unknown, range: string): boolean; + integer(value: unknown, range: string): boolean; + range(value: unknown, range: string, regExp: RegExp, testLength: boolean): boolean; + decimal(value: unknown, range: string): boolean; + number(value: unknown, range: string): boolean; + is(value: unknown, text: string): boolean; + isExactly(value: unknown, text: string): boolean; + not(value: unknown, notValue: unknown): boolean; + notExactly(value: unknown, notValue: unknown): boolean; + contains(value: unknown, text: string): boolean; + containsExactly(value: unknown, text: string): boolean; + doesntContain(value: unknown, text: string): boolean; + doesntContainExactly(value: unknown, text: string): boolean; + minLength(value: unknown, minLength: number): boolean; + exactLength(value: unknown, requiredLength: number): boolean; + maxLength(value: unknown, maxLength: number): boolean; + size(value: unknown, range: string): boolean; + match(value: unknown, identifier: string, module: unknown): boolean; + different(value: unknown, identifier: string, module: unknown): boolean; + creditCard(cardNumber: unknown, cardTypes: string): boolean; + minCount(value: unknown, minCount: number): boolean; + exactCount(value: unknown, exactCount: number): boolean; + maxCount(value: unknown, maxCount: number): boolean; + } + interface Selectors { /** * @default 'input[type="checkbox"], input[type="radio"]' diff --git a/types/fomantic-ui-modal.d.ts b/types/fomantic-ui-modal.d.ts index 9f900234db..545a23730d 100644 --- a/types/fomantic-ui-modal.d.ts +++ b/types/fomantic-ui-modal.d.ts @@ -5,12 +5,12 @@ declare namespace FomanticUI { /** * Shows the modal. */ - (behavior: 'show'): JQuery; + (behavior: 'show', callback?: Function): JQuery; /** * Hides the modal. */ - (behavior: 'hide'): JQuery; + (behavior: 'hide', callback?: Function): JQuery; /** * Toggles the modal. @@ -62,8 +62,13 @@ declare namespace FomanticUI { */ (behavior: 'set active'): JQuery; + /** + * Templates handling + */ + (behavior: keyof Modal.TemplatesSettings, ...args: any): Partial>; + (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: ModalSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; @@ -166,13 +171,13 @@ declare namespace FomanticUI { /** * Custom settings to extend UI dimmer. */ - dimmerSettings: DimmerSettings; + dimmerSettings: Partial>; /** * Custom settings to extend UI dimmer. * @default 'scale' */ - transition: string | TransitionSettings; + transition: string | Partial>; /** * Duration of animation. @@ -194,6 +199,62 @@ declare namespace FomanticUI { */ scrollbarWidth: number; + // dynamic content + + /** + * Title of dynamicly created modal. + * @default '' + */ + title: string; + + /** + * HTML content of dynamicly created modal. + * @default '' + */ + content: string; + + /** + * CSS classname(s) of dynamicly created modal. + * @default '' + */ + class: string; + + /** + * CSS classname(s) of dynamicly created modal's title. + * @default '' + */ + classTitle: string; + + /** + * CSS classname(s) of dynamicly created modal's content. + * @default '' + */ + classContent: string; + + /** + * CSS classname(s) of dynamicly created modal's actions. + * @default '' + */ + classActions: string; + + /** + * Determine if a close icon shoud be displayed on dynamicly created modal. + * @default false + */ + closeIcon: boolean; + + /** + * + * @default false + */ + actions: any; + + /** + * + * @default true + */ + preserveHTML: boolean; + // endregion // region Callbacks @@ -250,6 +311,8 @@ declare namespace FomanticUI { // region Config Template Settings + templates: Modal.TemplatesSettings; + // endregion // region Debug Settings @@ -299,6 +362,7 @@ declare namespace FomanticUI { type SelectorSettings = Partial>; type ClassNameSettings = Partial>; type ErrorSettings = Partial>; + type TemplatesSettings = Partial> & {[key: string]: (...args: any) => Partial>}; namespace Settings { interface Selectors { @@ -466,6 +530,12 @@ declare namespace FomanticUI { */ notFound: string; } + + interface Templates { + alert(): Partial>; + confirm(): Partial>; + prompt(): Partial>; + } } } } diff --git a/types/fomantic-ui-nag.d.ts b/types/fomantic-ui-nag.d.ts index 0f10437e39..d7fffdbd08 100644 --- a/types/fomantic-ui-nag.d.ts +++ b/types/fomantic-ui-nag.d.ts @@ -23,10 +23,10 @@ declare namespace FomanticUI { (behavior: 'clear'): JQuery; (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: NagSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; - (settings?: NagSettings): Partial>; + (settings?: Partial>): JQuery; } /** @@ -231,7 +231,7 @@ declare namespace FomanticUI { */ close: string; } - + interface ClassNames { /** * @default 'bottom' @@ -243,7 +243,7 @@ declare namespace FomanticUI { */ fixed: string; } - + interface Errors { /** * @default 'Unsupported storage method' diff --git a/types/fomantic-ui-popup.d.ts b/types/fomantic-ui-popup.d.ts index 62a040479c..825d972fab 100644 --- a/types/fomantic-ui-popup.d.ts +++ b/types/fomantic-ui-popup.d.ts @@ -67,7 +67,7 @@ declare namespace FomanticUI { */ (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: PopupSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; @@ -84,7 +84,7 @@ declare namespace FomanticUI { * This is useful for including a pre-formatted popup. * @default false */ - popup: false | string; + popup: false | string | JQuery; /** * Whether all other popups should be hidden when this popup is opened. @@ -266,39 +266,39 @@ declare namespace FomanticUI { /** * Callback on popup element creation, with created popup. */ - onCreate(this: JQuery): void; + onCreate(this: JQuery, element?: JQuery): void; /** * Callback immediately before Popup is removed from DOM. */ - onRemove(this: JQuery): void; + onRemove(this: JQuery, element?: JQuery): void; /** * Callback before popup is shown. * Returning 'false' from this callback will cancel the popup from showing. */ - onShow(this: JQuery): boolean; + onShow(this: JQuery, element?: JQuery): any; /** * Callback after popup is shown. */ - onVisible(this: JQuery): void; + onVisible(this: JQuery, element?: JQuery): void; /** * Callback before popup is hidden. * Returning 'false' from this callback will cancel the popup from hiding. */ - onHide(this: JQuery): boolean; + onHide(this: JQuery, element?: JQuery): any; /** * Callback after popup is hidden. */ - onHidden(this: JQuery): void; + onHidden(this: JQuery, element?: JQuery): void; /** * Callback after popup cannot be placed on screen. */ - onUnplaceable(this: JQuery): void; + onUnplaceable(this: JQuery, element?: JQuery): void; // endregion @@ -402,7 +402,7 @@ declare namespace FomanticUI { */ popup: string; } - + interface Metadatas { /** * @default 'activator' @@ -439,7 +439,7 @@ declare namespace FomanticUI { */ variation: string; } - + interface ClassNames { /** * @default 'active' diff --git a/types/fomantic-ui-progress.d.ts b/types/fomantic-ui-progress.d.ts index a98614b9c6..809a1707eb 100644 --- a/types/fomantic-ui-progress.d.ts +++ b/types/fomantic-ui-progress.d.ts @@ -158,7 +158,7 @@ declare namespace FomanticUI { */ (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: ProgressSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; @@ -208,6 +208,12 @@ declare namespace FomanticUI { */ precision: number; + /** + * Sets current overall percent. + * @default false + */ + percent: false | number; + /** * Setting a total value will make each call to increment get closer to this total (i.e. 1/20, 2/20 etc). * @default false @@ -349,7 +355,7 @@ declare namespace FomanticUI { */ progress: string; } - + interface ClassNames { /** * @default 'active' @@ -371,7 +377,7 @@ declare namespace FomanticUI { */ warning: string; } - + interface Texts { /** * @default false @@ -408,14 +414,14 @@ declare namespace FomanticUI { */ bars: string[]; } - + interface RegExps { /** * @default /\{\$*[A-z0-9]+\}/g */ variable: RegExp; } - + interface Metadatas { /** * @default 'percent' @@ -432,7 +438,7 @@ declare namespace FomanticUI { */ value: string; } - + interface Errors { /** * @default 'The method you called is not defined.' diff --git a/types/fomantic-ui-rating.d.ts b/types/fomantic-ui-rating.d.ts index ee458ddb4a..953632caaa 100644 --- a/types/fomantic-ui-rating.d.ts +++ b/types/fomantic-ui-rating.d.ts @@ -28,7 +28,7 @@ declare namespace FomanticUI { (behavior: 'clear rating'): JQuery; (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: RatingSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; diff --git a/types/fomantic-ui-search.d.ts b/types/fomantic-ui-search.d.ts index d3832a51a0..4d844603b7 100644 --- a/types/fomantic-ui-search.d.ts +++ b/types/fomantic-ui-search.d.ts @@ -10,7 +10,7 @@ declare namespace FomanticUI { /** * Displays message in search results with text, using template matching type. */ - (behavior: 'display message', text: string, type: string): JQuery; + (behavior: 'display message', text: string, type?: string): JQuery; /** * Cancels current remote search query. @@ -107,7 +107,7 @@ declare namespace FomanticUI { */ (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: SearchSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; @@ -124,7 +124,7 @@ declare namespace FomanticUI { * @see {@link https://fomantic-ui.com/behaviors/api.html#/settings} * @default {} */ - apiSettings: APISettings | JQueryAjaxSettings; + apiSettings: Partial> | JQueryAjaxSettings; /** * Minimum characters to query for results. @@ -192,7 +192,7 @@ declare namespace FomanticUI { * List mapping display content to JSON property, either with API or 'source'. * @default {} */ - fields: object; + fields: Search.FieldsSettings; /** * Specify object properties inside local source object which will be searched. @@ -228,6 +228,36 @@ declare namespace FomanticUI { */ ignoreDiacritics: boolean; + /** + * Whether to consider case sensitivity on local searching + * @default true + */ + ignoreSearchCase: boolean; + + /** + * Whether search result should highlight matching strings + * @default false + */ + highlightMatches: boolean; + + /** + * Template to use (specified in settings.templates) + * @default 'standard' + */ + type: 'escape' | 'message' | 'category' | 'standard'; + + /** + * Field to display in standard results template + * @default '' + */ + displayField: string; + + /** + * Whether to add events to prompt automatically + * @default true + */ + automatic: boolean; + // endregion // region Callbacks @@ -237,13 +267,13 @@ declare namespace FomanticUI { * The first parameter includes the filtered response results for that element. * The function should return 'false' to prevent default action (closing search results and selecting value). */ - onSelect(this: JQuery, result: object, response: object): boolean; + onSelect(this: JQuery, result: object, response: object): any; /** * Callback after processing element template to add HTML to results. * Function should return 'false' to prevent default actions. */ - onResultsAdd(this: JQuery, html: string): boolean; + onResultsAdd(this: JQuery, html: string): void | boolean; /** * Callback on search query. @@ -347,29 +377,30 @@ declare namespace FomanticUI { type RegExpSettings = Partial>; type ClassNameSettings = Partial>; type MetadataSettings = Partial>; + type FieldsSettings = Partial>; type ErrorSettings = Partial>; namespace Settings { interface Templates { /** - * @default function(string) + * @default function(string, preserveHTML) */ - escape: Function; + escape: (string: string, preserveHTML?: boolean) => string; /** - * @default function(message, type) + * @default function(message, type, header) */ - message: Function; + message: (message: string, type?: string, header?: string) => string; /** - * @default function(response) + * @default function(response, fields, preserveHTML) */ - category: Function; + category: (response: unknown, fields: {[key: string]: string}, preserveHTML?: boolean) => string; /** - * @default function(response) + * @default function(response, fields, preserveHTML) */ - standard: Function; + standard: (response: unknown, fields: {[key: string]: string}, preserveHTML?: boolean) => string; } interface Selectors { @@ -450,6 +481,86 @@ declare namespace FomanticUI { results: string; } + interface Fields { + /** + * Array of categories (category view) + * @default 'results' + */ + categories: string; + + /** + * Name of category (category view) + * @default 'name' + */ + categoryName: string; + + /** + * Array of results (category view) + * @default 'results' + */ + categoryResults: string; + + /** + * Sesult description + * @default ' description' + */ + description: string; + + /** + * Result image + * @default 'image' + */ + image: string; + + /** + * Result alt text for image + * @default 'alt' + */ + alt: string; + + /** + * Result price + * @default 'price' + */ + price: string; + + /** + * Array of results (standard) + * @default 'results' + */ + results: string; + + /** + * Result title + * @default 'title' + */ + title: string; + + /** + * Result url + * @default 'url' + */ + url: string; + + /** + * "view more" object name + * @default 'action' + */ + action: string; + + /** + * "view more" text + * @default 'text' + */ + actionText: string; + + /** + * "view more" url + * @default 'url' + */ + actionURL: string; + } + interface Errors { /** * @default 'Cannot search. No source used, and Fomantic API module was not included' diff --git a/types/fomantic-ui-shape.d.ts b/types/fomantic-ui-shape.d.ts index 93f44a385a..fe136f9efe 100644 --- a/types/fomantic-ui-shape.d.ts +++ b/types/fomantic-ui-shape.d.ts @@ -102,7 +102,7 @@ declare namespace FomanticUI { */ (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: ShapeSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; @@ -257,7 +257,7 @@ declare namespace FomanticUI { */ active: string; } - + interface Errors { /** * @default 'You tried to switch to a side that does not exist.' diff --git a/types/fomantic-ui-sidebar.d.ts b/types/fomantic-ui-sidebar.d.ts index fd5b8d2382..67b500f2f3 100644 --- a/types/fomantic-ui-sidebar.d.ts +++ b/types/fomantic-ui-sidebar.d.ts @@ -68,7 +68,7 @@ declare namespace FomanticUI { */ (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: SidebarSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; @@ -281,7 +281,7 @@ declare namespace FomanticUI { */ sidebar: string; } - + interface RegExps { /** * @default /(iPad|iPhone|iPod)/g @@ -298,7 +298,7 @@ declare namespace FomanticUI { */ mobile: RegExp; } - + interface ClassNames { /** * @default 'active' @@ -370,7 +370,7 @@ declare namespace FomanticUI { */ visible: string; } - + interface Errors { /** * @default 'The method you called is not defined.' diff --git a/types/fomantic-ui-slider.d.ts b/types/fomantic-ui-slider.d.ts index d9ebd98d69..1d272c78a4 100644 --- a/types/fomantic-ui-slider.d.ts +++ b/types/fomantic-ui-slider.d.ts @@ -35,7 +35,7 @@ declare namespace FomanticUI { */ (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: SliderSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; diff --git a/types/fomantic-ui-sticky.d.ts b/types/fomantic-ui-sticky.d.ts index 0fd5febb0b..f4d39b8d4c 100644 --- a/types/fomantic-ui-sticky.d.ts +++ b/types/fomantic-ui-sticky.d.ts @@ -3,7 +3,7 @@ declare namespace FomanticUI { settings: StickySettings; (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: StickySettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; diff --git a/types/fomantic-ui-tab.d.ts b/types/fomantic-ui-tab.d.ts index 0f42e89a2d..5f93af2199 100644 --- a/types/fomantic-ui-tab.d.ts +++ b/types/fomantic-ui-tab.d.ts @@ -48,7 +48,7 @@ declare namespace FomanticUI { */ (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: TabSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; @@ -149,7 +149,7 @@ declare namespace FomanticUI { * Tabs are limited to those found inside this context. * @default false */ - context: false | string; + context: JQuery | string | false; /** * If enabled limits tabs to children of passed context. @@ -278,7 +278,7 @@ declare namespace FomanticUI { */ determineTitle: Function; } - + interface Selectors { /** * @default '.ui.tab' @@ -290,7 +290,7 @@ declare namespace FomanticUI { */ parent: string; } - + interface Metadatas { /** * @default 'tab' @@ -319,7 +319,7 @@ declare namespace FomanticUI { */ active: string; } - + interface Errors { /** * @default 'You attempted to load content without API module' diff --git a/types/fomantic-ui-tests.ts b/types/fomantic-ui-tests.ts deleted file mode 100644 index af828e44ab..0000000000 --- a/types/fomantic-ui-tests.ts +++ /dev/null @@ -1,25 +0,0 @@ -/// - -$().accordion(); // $ExpectType JQuery -$().api();// $ExpectType JQuery -$().calendar(); // $ExpectType JQuery -$().checkbox(); // $ExpectType JQuery -$('body').dimmer(); // $ExpectType JQuery -$().dropdown(); // $ExpectType JQuery -$().embed(); // $ExpectType JQuery -$().flyout(); // $ExpectType JQuery -$().form(); // $ExpectType JQuery -$().modal(); // $ExpectType JQuery -$().nag(); // $ExpectType JQuery -$().popup(); // $ExpectType JQuery -$().progress(); // $ExpectType JQuery -$().rating(); // $ExpectType JQuery -$().search(); // $ExpectType JQuery -$().shape(); // $ExpectType JQuery -$().sidebar(); // $ExpectType JQuery -$().slider(); // $ExpectType JQuery -$().sticky(); // $ExpectType JQuery -$().tab(); // $ExpectType JQuery -$('body').toast(); // $ExpectType JQuery -$().transition(); // $ExpectType JQuery -$().visibility(); // $ExpectType JQuery diff --git a/types/fomantic-ui-toast.d.ts b/types/fomantic-ui-toast.d.ts index 481403bbc3..daf3da0a78 100644 --- a/types/fomantic-ui-toast.d.ts +++ b/types/fomantic-ui-toast.d.ts @@ -12,6 +12,11 @@ declare namespace FomanticUI { */ (behavior: 'animate continue'): JQuery; + /** + * Show the toast + */ + (behavior: 'show'): JQuery; + /** * Closes the toast */ @@ -28,7 +33,7 @@ declare namespace FomanticUI { (behavior: 'get remainingTime'): number; (behavior: 'refresh' | 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: ToastSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; @@ -120,6 +125,13 @@ declare namespace FomanticUI { */ showImage: false | string; + /** + * Alt text for a given showImage. + * + * @default false + */ + alt: false | string; + /** * Define if the toast should display an icon which matches to a given class. * If a string is given, this will be used as icon classname. @@ -273,7 +285,7 @@ declare namespace FomanticUI { /** * An array of objects. Each object defines an action with 'properties' 'text', 'class', 'icon' and 'click'. */ - actions: Toast.ActionsSettings; + actions: Toast.ActionsSettings[]; // endregion diff --git a/types/fomantic-ui-transition.d.ts b/types/fomantic-ui-transition.d.ts index 8a0edab45d..014d056519 100644 --- a/types/fomantic-ui-transition.d.ts +++ b/types/fomantic-ui-transition.d.ts @@ -112,11 +112,39 @@ declare namespace FomanticUI { */ (behavior: 'is supported'): boolean; + (behavior: 'scale', duration?: any, onComplete?: () => any): JQuery; + + (behavior: 'zoom', duration?: any, onComplete?: () => any): JQuery; + + (behavior: 'fade' | 'fade up' | 'fade down' | 'fade left' | 'fade right', duration?: any, onComplete?: () => any): JQuery; + + (behavior: 'horizontal flip' | 'vertical flip', duration?: any, onComplete?: () => any): JQuery; + + (behavior: 'drop', duration?: any, onComplete?: () => any): JQuery; + + (behavior: 'fly up' | 'fly down' | 'fly left' | 'fly right', duration?: any, onComplete?: () => any): JQuery; + + (behavior: 'swing up' | 'swing down' | 'swing left' | 'swing right', duration?: any, onComplete?: () => any): JQuery; + + (behavior: 'browse' | 'browse up' | 'browse down' | 'browse left' | 'browse right', duration?: any, onComplete?: () => any): JQuery; + + (behavior: 'slide up' | 'slide down' | 'slide left' | 'slide right', duration?: any, onComplete?: () => any): JQuery; + + // Static animations + (behavior: 'pulsating', duration?: any, onComplete?: () => any): JQuery; + (behavior: 'jiggle', duration?: any, onComplete?: () => any): JQuery; + (behavior: 'flash', duration?: any, onComplete?: () => any): JQuery; + (behavior: 'shake', duration?: any, onComplete?: () => any): JQuery; + (behavior: 'pulse', duration?: any, onComplete?: () => any): JQuery; + (behavior: 'tada', duration?: any, onComplete?: () => any): JQuery; + (behavior: 'bounce', duration?: any, onComplete?: () => any): JQuery; + (behavior: 'glow', duration?: any, onComplete?: () => any): JQuery; + /** * Destroys instance and removes all events. */ (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: TransitionSettings[K]): JQuery; (behavior: 'setting', value: Partial>): JQuery; (settings?: Partial>): JQuery; diff --git a/types/fomantic-ui-visibility.d.ts b/types/fomantic-ui-visibility.d.ts index 7580edeb8d..42259ffa87 100644 --- a/types/fomantic-ui-visibility.d.ts +++ b/types/fomantic-ui-visibility.d.ts @@ -44,10 +44,10 @@ declare namespace FomanticUI { (behavior: 'get screen size'): object; (behavior: 'destroy'): JQuery; - (behavior: 'setting', name: K, value?: undefined, ): Partial>; + (behavior: 'setting', name: K, value?: undefined,): Partial>; (behavior: 'setting', name: K, value: VisibilitySettings[K]): JQuery; - (behavior: 'setting', value: VisibilitySettings): JQuery; - (settings?: VisibilitySettings): JQuery; + (behavior: 'setting', value: Partial>): JQuery; + (settings?: Partial>): JQuery; } /** diff --git a/types/index.d.ts b/types/index.d.ts index ba004a5f68..8b57b9d6c3 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -30,34 +30,34 @@ /// interface JQuery { - accordion: FomanticUI.Accordion; - api: FomanticUI.API; - calendar: FomanticUI.Calendar; - checkbox: FomanticUI.Checkbox; - dimmer: FomanticUI.Dimmer; - dropdown: FomanticUI.Dropdown; - embed: FomanticUI.Embed; - flyout: FomanticUI.Flyout; - form: FomanticUI.Form; - modal: FomanticUI.Modal; - nag: FomanticUI.Nag; - popup: FomanticUI.Popup; - progress: FomanticUI.Progress; - rating: FomanticUI.Rating; - search: FomanticUI.Search; - shape: FomanticUI.Shape; - sidebar: FomanticUI.Sidebar; - slider: FomanticUI.Slider; - sticky: FomanticUI.Sticky; - tab: FomanticUI.Tab; - toast: FomanticUI.Toast; + accordion: FomanticUI.Accordion; + api: FomanticUI.API; + calendar: FomanticUI.Calendar; + checkbox: FomanticUI.Checkbox; + dimmer: FomanticUI.Dimmer; + dropdown: FomanticUI.Dropdown; + embed: FomanticUI.Embed; + flyout: FomanticUI.Flyout; + form: FomanticUI.Form; + modal: FomanticUI.Modal; + nag: FomanticUI.Nag; + popup: FomanticUI.Popup; + progress: FomanticUI.Progress; + rating: FomanticUI.Rating; + search: FomanticUI.Search; + shape: FomanticUI.Shape; + sidebar: FomanticUI.Sidebar; + slider: FomanticUI.Slider; + sticky: FomanticUI.Sticky; + tab: FomanticUI.Tab; + toast: FomanticUI.Toast; transition: FomanticUI.Transition; visibility: FomanticUI.Visibility; } interface JQueryStatic { - api: FomanticUI.API; - flyout: FomanticUI.Flyout; - modal: FomanticUI.Modal; - toast: FomanticUI.Toast; + api: FomanticUI.API; + flyout: FomanticUI.Flyout; + modal: FomanticUI.Modal; + toast: FomanticUI.Toast; } diff --git a/types/tests.ts b/types/tests.ts new file mode 100644 index 0000000000..bae2db2667 --- /dev/null +++ b/types/tests.ts @@ -0,0 +1,188 @@ +/// + +$().accordion(); // $ExpectType JQuery +$().api();// $ExpectType JQuery +$().calendar(); // $ExpectType JQuery +$().checkbox(); // $ExpectType JQuery +$('body').dimmer(); // $ExpectType JQuery +$().dropdown(); // $ExpectType JQuery +$().embed(); // $ExpectType JQuery +$().flyout(); // $ExpectType JQuery +$().form(); // $ExpectType JQuery +$().modal(); // $ExpectType JQuery +$().nag(); // $ExpectType JQuery +$().popup(); // $ExpectType JQuery +$().progress(); // $ExpectType JQuery +$().rating(); // $ExpectType JQuery +$().search(); // $ExpectType JQuery +$().shape(); // $ExpectType JQuery +$().sidebar(); // $ExpectType JQuery +$().slider(); // $ExpectType JQuery +$().sticky(); // $ExpectType JQuery +$().tab(); // $ExpectType JQuery +$('body').toast(); // $ExpectType JQuery +$().transition(); // $ExpectType JQuery +$().visibility(); // $ExpectType JQuery + +/* Define API endpoints once globally */ +$.fn.api.settings.api = { + 'get followers': '/followers/{id}?results={count}', + 'create user': '/create', + 'add user': '/add/{id}', + 'follow user': '/follow/{id}', + search: '/search/?query={value}', +}; + +$().calendar({ + today: true, + initialDate: null, + endCalendar: $(), +}); // $ExpectType JQuery + +$.flyout('alert', 'hello'); // $ExpectType JQuery +$.flyout('confirm', 'Are you sure?', function () { /* make eslint happy */ }); // $ExpectType JQuery +$.flyout('prompt', 'Enter Code', function () { /* make eslint happy */ }); // $ExpectType JQuery + +$.fn.flyout.settings.templates.greet = function (username) { + return { + title: 'Greetings to ' + username + '!', + content: '' + username.toUpperCase() + 'is the best!', + closeIcon: true, + class: 'inverted', + classContent: 'centered', + }; +}; + +$().form({ + fields: { + field1: { + rules: [ + { + type: 'notEmpty', + }, + ], + }, + field2: { + rules: [ + { + type: 'isExactly[dog]', + prompt: '{name} is set to "{value}" that is totally wrong. It should be {ruleValue}', + }, + ], + }, + field3: { + rules: [ + { + type: 'isExactly[cat]', + prompt: function (value) { + if (value === 'dog') { + return 'I told you to put cat, not dog!'; + } + + return 'That is not cat'; + }, + }, + ], + }, + color: { + identifier: 'color', + rules: [{ + type: 'regExp', + value: /rgb\((\d{1,3}), (\d{1,3}), (\d{1,3})\)/i, + }], + }, + yearsPracticed: { + identifier: 'yearsPracticed', + depends: 'isDoctor', + rules: [ + { + type: 'notEmpty', + prompt: 'Please enter the number of years you have been a doctor', + }, + ], + }, + ccEmail: { + identifier: 'cc-email', + optional: true, + rules: [ + { + type: 'email', + prompt: 'Please enter a valid second e-mail', + }, + ], + }, + }, +}); // $ExpectType JQuery + +$().form({ + fields: { + gender: 'notEmpty', + name: 'notEmpty', + password: ['minLength[6]', 'notEmpty'], + }, +}); // $ExpectType JQuery + +$.fn.form.settings.rules.date = function (dateStr: string) { + return dateStr !== ''; +}; + +$.modal('alert', { + title: 'Listen to me', + content: 'I love Fomantic-UI', + handler: function () { + $.toast({ message: 'Great!' }); + }, +}); + +$.fn.modal.settings.templates.greet = function (username: string) { + // do something according to modals settings and/or given parameters + return { + title: 'Greetings to ' + username + '!', + content: '' + username.toUpperCase() + 'is the best!', + class: 'inverted', + classContent: 'centered', + dimmerSettings: { + variation: 'inverted', + }, + }; +}; + +$.modal('greet', 'mom'); + +$().nag({ + persist: true, +}); // $ExpectType JQuery + +$().search('display message', 'Hello, world !'); // $ExpectType JQuery + +// To change the defaults for all toast at once override the module as follows +$.fn.toast.settings.progressUp = true; +$.fn.toast.settings.class = 'info'; +$.fn.toast.settings.showIcon = true; +$.fn.toast.settings.className.box = 'toast-box'; // removes shadow +$.fn.toast.settings.className.title = 'header'; // smaller font size +$.fn.toast.settings.className.icon = 'icon'; // top position again +$.fn.toast.settings.transition.closeEasing = 'easeOutBounce'; + +// Or apply the old defaults directly to the toast +$.toast({ + title: 'LOOK', + message: 'Turned back time to 2.7.0 defaults', + showProgress: 'bottom', + // make it look like 2.7.0 + showIcon: true, + progressUp: true, + class: 'info', + className: { + box: 'toast-box', + title: 'header', + icon: 'icon', + }, + transition: { + closeEasing: 'easeOutBounce', + }, +}); + +$().transition('shake', '200ms'); +$().transition('horizontal flip', 500, function () { /* make eslint happy */ }); +$().transition('fade up'); diff --git a/types/tsconfig.json b/types/tsconfig.json index 4e47de98c3..890aa8966a 100644 --- a/types/tsconfig.json +++ b/types/tsconfig.json @@ -18,6 +18,6 @@ }, "files": [ "index.d.ts", - "fomantic-ui-tests.ts" + "tests.ts" ] } diff --git a/yarn.lock b/yarn.lock index 59eb47dd3a..3e1d805bec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8,9 +8,9 @@ integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== "@actions/core@^1.6.0": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.10.0.tgz#44551c3c71163949a2f06e94d9ca2157a0cfac4f" - integrity sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug== + version "1.10.1" + resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.10.1.tgz#61108e7ac40acae95ee36da074fa5850ca4ced8a" + integrity sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g== dependencies: "@actions/http-client" "^2.0.1" uuid "^8.3.2" @@ -67,10 +67,10 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8" integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw== -"@eslint/eslintrc@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" - integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -82,18 +82,18 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.48.0": - version "8.48.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.48.0.tgz#642633964e217905436033a2bd08bf322849b7fb" - integrity sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw== +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== -"@humanwhocodes/config-array@^0.11.10": - version "0.11.10" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" - integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" minimatch "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": @@ -101,10 +101,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== "@internal/eslint-plugin@file:.eslint": version "1.0.0" @@ -283,6 +283,11 @@ "@types/expect" "^1.20.4" "@types/node" "*" +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + abbrev@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -515,15 +520,15 @@ array-each@^1.0.0, array-each@^1.0.1: resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= -array-includes@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" - integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== +array-includes@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" is-string "^1.0.7" array-initial@^1.0.0: @@ -582,45 +587,46 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.findlastindex@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz#bc229aef98f6bd0533a2bc61ff95209875526c9b" - integrity sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw== +array.prototype.findlastindex@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" - get-intrinsic "^1.1.3" + get-intrinsic "^1.2.1" -array.prototype.flat@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" - integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== +array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== +array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -arraybuffer.prototype.slice@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz#9b5ea3868a6eebc30273da577eb888381c0044bb" - integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw== +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== dependencies: array-buffer-byte-length "^1.0.0" call-bind "^1.0.2" define-properties "^1.2.0" + es-abstract "^1.22.1" get-intrinsic "^1.2.1" is-array-buffer "^3.0.2" is-shared-array-buffer "^1.0.2" @@ -831,14 +837,14 @@ braces@^3.0.2: fill-range "^7.0.1" browserslist@^4.21.4: - version "4.21.10" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" - integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== dependencies: - caniuse-lite "^1.0.30001517" - electron-to-chromium "^1.4.477" - node-releases "^2.0.13" - update-browserslist-db "^1.0.11" + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" buffer-equal@^1.0.0: version "1.0.0" @@ -881,6 +887,15 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -905,10 +920,10 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30001426, caniuse-lite@^1.0.30001517: - version "1.0.30001517" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz#90fabae294215c3495807eb24fc809e11dc2f0a8" - integrity sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA== +caniuse-lite@^1.0.30001426, caniuse-lite@^1.0.30001587: + version "1.0.30001587" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001587.tgz#a0bce920155fa56a1885a69c74e1163fc34b4881" + integrity sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA== chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" @@ -1270,7 +1285,7 @@ debug@^3.2.6, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: +debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -1331,6 +1346,15 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -1471,10 +1495,10 @@ editorconfig@^0.15.3: semver "^5.6.0" sigmund "^1.0.1" -electron-to-chromium@^1.4.477: - version "1.4.477" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.477.tgz#05669aa6f161ee9076a6805457e9bd9fe6d0dfd1" - integrity sha512-shUVy6Eawp33dFBFIoYbIwLHrX0IZ857AlH9ug2o4rvbWmpaCUdBpQ5Zw39HRrfzAFm4APJE9V+E2A/WB0YqJw== +electron-to-chromium@^1.4.668: + version "1.4.670" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.670.tgz#0fc5ac92ada8371e898ea72d577ffc888167a017" + integrity sha512-hcijYOWjOtjKrKPtNA6tuLlA/bTLO3heFG8pQA6mLpq7dRydSWicXova5lyxDzp1iVJaYhK7J2OQlGE52KYn7A== emoji-regex@^8.0.0: version "8.0.0" @@ -1502,57 +1526,26 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.20.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.5.tgz#e6dc99177be37cacda5988e692c3fa8b218e95d2" - integrity sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" - get-symbol-description "^1.0.0" - gopd "^1.0.1" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-weakref "^1.0.2" - object-inspect "^1.12.2" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" - safe-regex-test "^1.0.0" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" - unbox-primitive "^1.0.2" - -es-abstract@^1.21.2: - version "1.22.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc" - integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== +es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== dependencies: array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.1" + arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.5" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" get-symbol-description "^1.0.0" globalthis "^1.0.3" gopd "^1.0.1" - has "^1.0.3" has-property-descriptors "^1.0.0" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" internal-slot "^1.0.5" is-array-buffer "^3.0.2" is-callable "^1.2.7" @@ -1560,23 +1553,23 @@ es-abstract@^1.21.2: is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-typed-array "^1.1.10" + is-typed-array "^1.1.12" is-weakref "^1.0.2" - object-inspect "^1.12.3" + object-inspect "^1.13.1" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.5.0" - safe-array-concat "^1.0.0" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.7" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" typed-array-buffer "^1.0.0" typed-array-byte-length "^1.0.0" typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.10" + which-typed-array "^1.1.13" es-set-tostringtag@^2.0.1: version "2.0.1" @@ -1603,13 +1596,14 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: - version "0.10.59" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.59.tgz#71038939730eb6f4f165f1421308fb60be363bc6" - integrity sha512-cOgyhW0tIJyQY1Kfw6Kr0viu9ZlUctVchRMZ7R0HiH3dxTSp5zJDLecwxUqPUrGKMsgBI1wd1FL+d9Jxfi4cLw== +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@~0.10.14: + version "0.10.63" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.63.tgz#9c222a63b6a332ac80b1e373b426af723b895bd6" + integrity sha512-hUCZd2Byj/mNKjfP9jXrdVZ62B8KuA/VoK7X8nUh5qT+AxDmcbvZz041oDVZdbIN1qW6XY9VDNwzkvKnZvK2TQ== dependencies: es6-iterator "^2.0.3" es6-symbol "^3.1.3" + esniff "^2.0.1" next-tick "^1.1.0" es6-iterator@^2.0.1, es6-iterator@^2.0.3: @@ -1654,14 +1648,14 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-import-resolver-node@^0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" - integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== dependencies: debug "^3.2.7" - is-core-module "^2.11.0" - resolve "^1.22.1" + is-core-module "^2.13.0" + resolve "^1.22.4" eslint-module-utils@^2.8.0: version "2.8.0" @@ -1671,27 +1665,27 @@ eslint-module-utils@^2.8.0: debug "^3.2.7" eslint-plugin-import@^2.26.0: - version "2.28.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" - integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== - dependencies: - array-includes "^3.1.6" - array.prototype.findlastindex "^1.2.2" - array.prototype.flat "^1.3.1" - array.prototype.flatmap "^1.3.1" + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" debug "^3.2.7" doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.7" + eslint-import-resolver-node "^0.3.9" eslint-module-utils "^2.8.0" - has "^1.0.3" - is-core-module "^2.13.0" + hasown "^2.0.0" + is-core-module "^2.13.1" is-glob "^4.0.3" minimatch "^3.1.2" - object.fromentries "^2.0.6" - object.groupby "^1.0.0" - object.values "^1.1.6" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" semver "^6.3.1" - tsconfig-paths "^3.14.2" + tsconfig-paths "^3.15.0" eslint-rule-composer@^0.3.0: version "0.3.0" @@ -1712,17 +1706,18 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8.29.0: - version "8.48.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.48.0.tgz#bf9998ba520063907ba7bfe4c480dc8be03c2155" - integrity sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg== + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.48.0" - "@humanwhocodes/config-array" "^0.11.10" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -1754,6 +1749,16 @@ eslint@^8.29.0: strip-ansi "^6.0.1" text-table "^0.2.0" +esniff@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" + integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== + dependencies: + d "^1.0.1" + es5-ext "^0.10.62" + event-emitter "^0.3.5" + type "^2.7.2" + espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" @@ -1787,6 +1792,14 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -2103,17 +2116,22 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" -functions-have-names@^1.2.2, functions-have-names@^1.2.3: +functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== @@ -2145,7 +2163,7 @@ get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.1" -get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: +get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== @@ -2164,6 +2182,16 @@ get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: has-proto "^1.0.1" has-symbols "^1.0.3" +get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== + dependencies: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-symbol-description@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" @@ -2771,6 +2799,13 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" @@ -2910,15 +2945,6 @@ inquirer@^8.2.0: through "^2.3.6" wrap-ansi "^6.0.1" -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" @@ -3011,12 +3037,12 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.11.0, is-core-module@^2.12.0, is-core-module@^2.13.0, is-core-module@^2.5.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" - integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== +is-core-module@^2.12.0, is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.5.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - has "^1.0.3" + hasown "^2.0.0" is-data-descriptor@^0.1.4: version "0.1.4" @@ -3207,7 +3233,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.9: +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: version "1.1.12" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== @@ -3954,10 +3980,10 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== -nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== nanomatch@^1.2.9: version "1.2.13" @@ -4007,10 +4033,10 @@ node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" -node-releases@^2.0.13: - version "2.0.13" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" - integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== nopt@^6.0.0: version "6.0.0" @@ -4087,16 +4113,16 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.12.2, object-inspect@^1.9.0: +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +object-inspect@^1.9.0: version "1.12.2" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== -object-inspect@^1.12.3: - version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== - object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -4139,23 +4165,23 @@ object.defaults@^1.0.0, object.defaults@^1.1.0: for-own "^1.0.0" isobject "^3.0.0" -object.fromentries@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" - integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== +object.fromentries@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -object.groupby@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.0.tgz#cb29259cf90f37e7bac6437686c1ea8c916d12a9" - integrity sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw== +object.groupby@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" - es-abstract "^1.21.2" + es-abstract "^1.22.1" get-intrinsic "^1.2.1" object.map@^1.0.0: @@ -4181,14 +4207,14 @@ object.reduce@^1.0.0: for-own "^1.0.0" make-iterator "^1.0.0" -object.values@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== +object.values@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" @@ -4517,13 +4543,13 @@ postcss-value-parser@^4.2.0: integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss@^8.3.0, postcss@^8.3.11, postcss@^8.4.19: - version "8.4.29" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.29.tgz#33bc121cf3b3688d4ddef50be869b2a54185a1dd" - integrity sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw== + version "8.4.38" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" + integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== dependencies: - nanoid "^3.3.6" + nanoid "^3.3.7" picocolors "^1.0.0" - source-map-js "^1.0.2" + source-map-js "^1.2.0" prelude-ls@^1.2.1: version "1.2.1" @@ -4697,23 +4723,14 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" - -regexp.prototype.flags@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" - integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== +regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" - functions-have-names "^1.2.3" + set-function-name "^2.0.0" remove-bom-buffer@^3.0.0: version "3.0.0" @@ -4840,7 +4857,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.22.1, resolve@^1.4.0: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.4.0: version "1.22.3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.3.tgz#4b4055349ffb962600972da1fdc33c46a4eb3283" integrity sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw== @@ -4849,6 +4866,15 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.22.1, resolve@^1.4.0 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -4947,13 +4973,13 @@ rxjs@^7.5.5: dependencies: tslib "^2.1.0" -safe-array-concat@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" - integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.2.0" + get-intrinsic "^1.2.1" has-symbols "^1.0.3" isarray "^2.0.5" @@ -5001,9 +5027,9 @@ semver-greatest-satisfied-range@^1.1.0: sver-compat "^1.5.0" "semver@2 || 3 || 4 || 5", semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== semver@^6.3.1: version "6.3.1" @@ -5011,9 +5037,9 @@ semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.4, semver@^7.3.5: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== dependencies: lru-cache "^6.0.0" @@ -5022,6 +5048,25 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -5107,10 +5152,10 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" @@ -5227,32 +5272,32 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string.prototype.trim@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" - integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" string_decoder@^1.1.1: version "1.3.0" @@ -5575,10 +5620,10 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -tsconfig-paths@^3.14.2: - version "3.14.2" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" - integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== dependencies: "@types/json5" "^0.0.29" json5 "^1.0.2" @@ -5642,6 +5687,11 @@ type@^2.5.0: resolved "https://registry.yarnpkg.com/type/-/type-2.6.0.tgz#3ca6099af5981d36ca86b78442973694278a219f" integrity sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ== +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + typed-array-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" @@ -5763,10 +5813,10 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" - integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -5935,7 +5985,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which-typed-array@^1.1.10, which-typed-array@^1.1.11: +which-typed-array@^1.1.11: version "1.1.11" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== @@ -5946,6 +5996,17 @@ which-typed-array@^1.1.10, which-typed-array@^1.1.11: gopd "^1.0.1" has-tostringtag "^1.0.0" +which-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + which@^1.2.14, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"