Почему не анимируется ширина?

Есть вот такое поле вставки картинки с двумя режимами. При смене режима у внутреннего контейнера меняется ширина (а также стоит overflow-hidden). Таким образом данное сужение контейнера должно анимироваться, но при этом этого не происходит. На контейнере стоит transition. В чем может быть проблема?

введите сюда описание изображения

let radioBtns = document.querySelectorAll('.radio-input');

function toggle (event) {
    if (event.target.checked) {
        event.target.parentElement.querySelector('.circle').classList.add('on');
    }

    radioBtns.forEach(btn => {
        if (!btn.checked) {
            btn.parentElement.querySelector('.circle').classList.remove('on');
        }
    })
}

radioBtns.forEach(btn => {
    btn.addEventListener('change', toggle);
});

let row = document.querySelector('.insertImagePanel').querySelector('.row');
let file_radio = document.querySelector('#insertByFile');
let url_radio = document.querySelector('#insertByUrl');

function urlMode () {
    row.style.width = '';
}

function fileMode () {
    row.style.width = '238.5px';
}

url_radio.addEventListener('change', urlMode);
file_radio.addEventListener('change', fileMode);
.insertImagePanel .row .url-input {
  font-family: "Kharkiv Tone", sans-serif;
  font-size: 32px;
  text-align: center;
}

*, *:before, *:after {
  padding: 0;
  margin: 0;
  border: 0;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  list-style: none;
  user-select: none;
}

input:focus {
  outline: 0;
}

a {
  text-decoration: none;
}

img {
  user-select: none;
}

html {
  scroll-behavior: smooth;
}

button::-moz-focus-inner {
  padding: 0;
  border: 0;
}

@font-face {
  font-family: "Kharkiv Tone";
  font-style: normal;
  font-weight: 400;
  src: local("Kharkiv Tone"), url("../../fonts/KharkivTone.ttf") format("truetype");
}
.insertImagePanel {
  background: #50085B;
  display: inline-flex;
  gap: 30px;
  padding-left: 10px;
  border-radius: 0 15px 15px 0;
  transition: all 300ms;
}
.insertImagePanel .image {
  height: 60px;
  width: 60px;
  display: grid;
  justify-items: center;
  align-items: center;
}
.insertImagePanel .row {
  display: flex;
  gap: 12.5px;
  align-items: center;
  transition: width 300ms;
  overflow: hidden;
}
.insertImagePanel .row .toggle {
  gap: 12.5px;
  display: flex;
}
.insertImagePanel .row .toggle .radio-toggle {
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.insertImagePanel .row .url-input {
  background: #D9D9D9;
  border-radius: 5px;
  height: 38px;
  width: 375px;
  padding-left: 10px;
  text-align: left;
  font-size: 20px;
}

.radio-toggle {
  width: 40px;
  min-height: 16px;
}
.radio-toggle input {
  display: none;
}
.radio-toggle input:checked + label {
  background: #D012FF;
  box-shadow: 0 -18px 20px -12px #0B9090 inset;
}
.radio-toggle .btn-field {
  transition: all 300ms;
  background: #D9D9D9;
  width: 40px;
  min-height: 16px;
  border-radius: 5px;
  display: grid;
  position: relative;
}
.radio-toggle .btn-field .circle {
  position: absolute;
  top: -3px;
  left: -2.42px;
  width: 22.42px;
  height: 22.98px;
  background: linear-gradient(180deg, #A00BC5 0%, #1B5454 100%);
  border: 3px solid #FFFFFF;
  border-radius: 15px;
  transition: all 300ms;
}
.radio-toggle .btn-field .circle.on {
  transform: translateX(21px);
}

/*# sourceMappingURL=radio.css.map */



/*# sourceMappingURL=insertImagePanel.css.map */
<div class="insertImagePanel popUp">
            <div class="row">
                <div class="url-toggle toggle">
                    <div class="image">
                        <img src="img/icons/link.svg" alt="" draggable="false">
                    </div>
                    <div class="radio-toggle">
                        <input type="radio" name="insertType" id="insertByUrl" value="url" checked class="radio-input" tabindex="-1">
                        <label for="insertByUrl" class="btn-field">
                            <div class="circle on"></div>
                        </label>
                    </div>
                </div>
                <div class="file-toggle toggle">
                    <div class="image">
                        <img src="img/icons/file-image.svg" alt="" draggable="false">
                    </div>
                    <div class="radio-toggle">
                        <input type="radio" name="insertType" id="insertByFile" value="file" class="radio-input f" tabindex="-1">
                        <label for="insertByFile" class="btn-field">
                            <div class="circle"></div>
                        </label>
                    </div>
                </div>
                <input type="url" name="url" class="url-input" tabindex="-1">
            </div>
            <div class="add image">
                <img src="img/icons/plus-square.svg" alt="" draggable="false">
            </div>
        </div>


Ответы (0 шт):