text: import { r as registerInstance, d as createEvent, c as getIonMode, h, H as Host, e as getElement } from './core-80bde1aa.js';
  import './config-3c7f3790.js';
  import { f as findItemLabel, a as renderHiddenInput } from './helpers-46f4a262.js';
  import { c as createColorClasses, h as hostContext } from './theme-18cbe2cc.js';
  var Checkbox = /** @class */ (function () {
      function Checkbox(hostRef) {
          var _this = this;
          registerInstance(this, hostRef);
          this.inputId = "ion-cb-" + checkboxIds++;
          /**
           * The name of the control, which is submitted with the form data.
           */
          this.name = this.inputId;
          /**
           * If `true`, the checkbox is selected.
           */
          this.checked = false;
          /**
           * If `true`, the checkbox will visually appear as indeterminate.
           */
          this.indeterminate = false;
          /**
           * If `true`, the user cannot interact with the checkbox.
           */
          this.disabled = false;
          /**
           * The value of the toggle does not mean if it's checked or not, use the `checked`
           * property for that.
           *
           * The value of a toggle is analogous to the value of a `<input type="checkbox">`,
           * it's only used when the toggle participates in a native `<form>`.
           */
          this.value = 'on';
          this.onClick = function () {
              _this.setFocus();
              _this.checked = !_this.checked;
              _this.indeterminate = false;
          };
          this.onFocus = function () {
              _this.ionFocus.emit();
          };
          this.onBlur = function () {
              _this.ionBlur.emit();
          };
          this.ionChange = createEvent(this, "ionChange", 7);
          this.ionFocus = createEvent(this, "ionFocus", 7);
          this.ionBlur = createEvent(this, "ionBlur", 7);
          this.ionStyle = createEvent(this, "ionStyle", 7);
      }
      Checkbox.prototype.componentWillLoad = function () {
          this.emitStyle();
      };
      Checkbox.prototype.checkedChanged = function (isChecked) {
          this.ionChange.emit({
              checked: isChecked,
              value: this.value
          });
          this.emitStyle();
      };
      Checkbox.prototype.disabledChanged = function () {
          this.emitStyle();
      };
      Checkbox.prototype.emitStyle = function () {
          this.ionStyle.emit({
              'checkbox-checked': this.checked,
              'interactive-disabled': this.disabled,
          });
      };
      Checkbox.prototype.setFocus = function () {
          if (this.buttonEl) {
              this.buttonEl.focus();
          }
      };
      Checkbox.prototype.render = function () {
          var _a;
          var _this = this;
          var _b = this, inputId = _b.inputId, indeterminate = _b.indeterminate, disabled = _b.disabled, checked = _b.checked, value = _b.value, color = _b.color, el = _b.el;
          var labelId = inputId + '-lbl';
          var mode = getIonMode(this);
          var label = findItemLabel(el);
          if (label) {
              label.id = labelId;
          }
          renderHiddenInput(true, el, this.name, (checked ? value : ''), disabled);
          var path = indeterminate
              ? h("path", { d: "M6 12L18 12" })
              : h("path", { d: "M5.9,12.5l3.8,3.8l8.8-8.8" });
          if (mode === 'md') {
              path = indeterminate
                  ? h("path", { d: "M2 12H22" })
                  : h("path", { d: "M1.73,12.91 8.1,19.28 22.79,4.59" });
          }
          return (h(Host, { onClick: this.onClick, role: "checkbox", "aria-disabled": disabled ? 'true' : null, "aria-checked": "" + checked, "aria-labelledby": labelId, class: Object.assign(Object.assign({}, createColorClasses(color)), (_a = {}, _a[mode] = true, _a['in-item'] = hostContext('ion-item', el), _a['checkbox-checked'] = checked, _a['checkbox-disabled'] = disabled, _a['checkbox-indeterminate'] = indeterminate, _a['interactive'] = true, _a)) }, h("svg", { class: "checkbox-icon", viewBox: "0 0 24 24" }, path), h("button", { type: "button", onFocus: this.onFocus, onBlur: this.onBlur, disabled: this.disabled, ref: function (btnEl) { return _this.buttonEl = btnEl; } })));
      };
      Object.defineProperty(Checkbox.prototype, "el", {
          get: function () { return getElement(this); },
          enumerable: true,
          configurable: true
      });
      Object.defineProperty(Checkbox, "watchers", {
          get: function () {
              return {
                  "checked": ["checkedChanged"],
                  "disabled": ["disabledChanged"]
              };
          },
          enumerable: true,
          configurable: true
      });
      Object.defineProperty(Checkbox, "style", {
          get: function () { return ":host{--background-checked:var(--ion-color-primary,#3880ff);--border-color-checked:var(--ion-color-primary,#3880ff);--checkmark-color:var(--ion-color-primary-contrast,#fff);--checkmark-width:1;--transition:none;display:inline-block;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2}:host(.ion-color){--background-checked:var(--ion-color-base);--border-color-checked:var(--ion-color-base);--checkmark-color:var(--ion-color-contrast)}button{left:0;top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}:host-context([dir=rtl]) button,[dir=rtl] button{left:unset;right:unset;right:0}button::-moz-focus-inner{border:0}.checkbox-icon{border-radius:var(--border-radius);display:block;position:relative;width:100%;height:100%;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-sizing:border-box;box-sizing:border-box}.checkbox-icon path{fill:none;stroke:var(--checkmark-color);stroke-width:var(--checkmark-width);opacity:0}:host(.checkbox-checked) .checkbox-icon,:host(.checkbox-indeterminate) .checkbox-icon{border-color:var(--border-color-checked);background:var(--background-checked)}:host(.checkbox-checked) .checkbox-icon path,:host(.checkbox-indeterminate) .checkbox-icon path{opacity:1}:host(.checkbox-disabled){pointer-events:none}:host{--border-radius:calc(var(--size) * .125);--border-width:2px;--border-style:solid;--border-color:rgba(var(--ion-text-color-rgb,0,0,0),0.51);--checkmark-width:3;--background:var(--ion-item-background,var(--ion-background-color,#fff));--transition:background 180ms cubic-bezier(0.4,0,0.2,1);--size:18px;width:var(--size);height:var(--size)}.checkbox-icon path{stroke-dasharray:30;stroke-dashoffset:30}:host(.checkbox-checked) .checkbox-icon path,:host(.checkbox-indeterminate) .checkbox-icon path{stroke-dashoffset:0;-webkit-transition:stroke-dashoffset 90ms linear 90ms;transition:stroke-dashoffset 90ms linear 90ms}:host(.checkbox-disabled){opacity:.3}:host(.in-item){margin-left:0;margin-right:0;margin-top:18px;margin-bottom:18px;display:block;position:static}:host(.in-item[slot=start]){margin-left:4px;margin-right:36px;margin-top:18px;margin-bottom:18px}\@supports ((-webkit-margin-start:0) or (margin-inline-start:0)) or (-webkit-margin-start:0){:host(.in-item[slot=start]){margin-left:unset;margin-right:unset;-webkit-margin-start:4px;margin-inline-start:4px;-webkit-margin-end:36px;margin-inline-end:36px}}"; },
          enumerable: true,
          configurable: true
      });
      return Checkbox;
  }());
  var checkboxIds = 0;
  export { Checkbox as ion_checkbox };
  